Intereting Posts

Не удалось найти перенос сокета «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, вот и все.

Есть идеи?

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

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

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

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

Предположим, вы хотели захватить 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-адресах.

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

Переход на 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";