我正在使用它来检查网址的可用性:
$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上,就是这些。
有什么想法吗?
答案 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