Ответ 1
также для ssl вам нужно префикс хоста с помощью ssl://
Я использую это, чтобы проверить наличие 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 вам нужно префикс хоста с помощью 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";