无法找到套接字传输“https”

时间:2008-12-18 17:30:36

标签: php iis fsockopen

我正在使用它来检查网址的可用性:

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

我收到了这个错误......

警告:fsockopen()[function.fsockopen]:无法连接到https://example.com/soapserver.php:443(无法找到套接字传输“https” - 您是否忘记在配置PHP时启用它?)in C:\ Home等等......

我正在使用IIS服务器btw,(不是我不做的!)所以我认为它与没有open-ssl有关,但我不确定。有人可以帮忙吗?

我做了一个phpinfo(),我确实有ssl,但在IMAP和cURL上,就是这些。

有什么想法吗?

6 个答案:

答案 0 :(得分:46)

取消注释extension=php_openssl.dll

中的行php.ini

答案 1 :(得分:29)

您应该只使用主机名,而不是fsockopen调用中的URL。您需要提供uri,减去实际HTTP标头中的主机/端口。正如@Martijin所指出的那样,并且如手册页中所列,您需要在主机名前加上ssl:// for SSL或tls://如果使用传输层安全性。

对于fsockopen,

Manual page。看一下例#1。

答案 2 :(得分:14)

对于ssl,您需要在主机前加上ssl://

答案 3 :(得分:3)

假设您想要抓住纽约时报,它实施HTTPS:

不正确:

<script> // https://github.com/seiyria/bootstrap-slider var slider_002 = new Slider( '#language_french' ); </script>

正确:

<script> // https://github.com/seiyria/bootstrap-slider var values = ['None', 'Read', 'Speak']; var formatter = (index) => values[index]; new Slider( '#language_english' ); new Slider( '#language_french', { formatter } ); new Slider( '#language_italian', { formatter } ); new Slider( '#language_spanish', { formatter } ); </script>

注意我已将$client = stream_socket_client('https://www.nytimes.com', $errno, $errstr, 30);替换为$client = stream_socket_client('tcp://www.nytimes.com:443', $errno, $errstr, 30);并将443端口附加到主机名。

我想我们可以说https://不会说网址。

答案 4 :(得分:2)

切换到ssl://对我有用,但我一直得到一个不好的回应。我发现我需要再添加一行来明确声明我的主机标题,如here所述,并确保我已将我的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";

答案 5 :(得分:0)

检查是否安装了curl for php。 如果没有安装,请安装curl。 for windows取消注释行:php.ini中的extension = php_openssl.dll, 对于ubuntu sudo apt-get install php-curl