Подтвердить что ты не робот

Не удалось найти перенос сокета "https"

Я использую это, чтобы проверить наличие URL-адреса:

$fp = fsockopen($url, 443, $errno, $errstr);

и я верну эту ошибку...

Предупреждение: fsockopen() [function.fsockopen]: невозможно подключиться к https://example.com/soapserver.php:443 (Не удалось найти сокет транспорт "https" - вы забыли включить его при настройке PHP?) в C:\Home и т.д. и т.д....

Я использую сервер IIS btw (нет, это не мое дело!), поэтому я думаю, что это связано с тем, что у меня нет open-ssl, но я не уверен. Может ли кто-нибудь помочь?

Я сделал phpinfo(), и у меня есть ssl, но в IMAP и cURL, вот и все.

Любые идеи?

4b9b3361

Ответ 1

также для ssl вам нужно префикс хоста с помощью ssl://

Ответ 2

Раскомментируйте строку: extension=php_openssl.dll в php.ini

Ответ 3

Вы должны использовать только имя хоста, а не URL-адрес в вызове fsockopen. Вам нужно будет предоставить uri, минус host/port в фактических заголовках HTTP. Как отметил @Martijin, и как указано на странице руководства, вам необходимо указать имя вашего хоста ssl://для SSL или tls://при использовании безопасности транспортного уровня.

Страница руководства для fsockopen. Посмотрите пример # 1.

Ответ 4

Предположим, вы хотели захватить NY Times, что обеспечивает HTTPS:

Неправильно:

$client = stream_socket_client('https://www.nytimes.com', $errno, $errstr, 30);

Правильно:

$client = stream_socket_client('tcp://www.nytimes.com:443', $errno, $errstr, 30);

Примечание. Я заменил https:// на tcp:// и добавил порт 443 к имени хоста.

Я думаю, мы можем сказать, что stream_socket_client() не говорит URL.

Ответ 5

Проверяйте завиток, установленный или нет для php. если он не установлен, установите завиток. для окон Раскомментируйте строку: extension = php_openssl.dll в php.ini, для ubuntu sudo apt-get install php-curl

Ответ 6

Переход на ssl:// работал у меня, но я продолжал получать ответ BAD REQUEST. Я обнаружил, что мне нужно добавить еще одну строку, чтобы явно объявить заголовок хоста, как описано здесь, и убедиться, что я обновил свой HTTP от HTTP/1.0 до HTTP/1.1

$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n";