我在我的MAC操作系统中启用了php,正常的PHP代码工作正常,但我今天遇到了一个奇怪的错误
<?php
$hi = file_get_contents("https://ojooo.com");
echo $hi;
?>
对于上面的代码我在我的本地服务器上得到以下错误。但上面的代码在我的托管上工作正常。
Warning: file_get_contents() [function.file-get-contents]: SSL operation failed with code 1. OpenSSL Error messages: error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112) in /Library/WebServer/Documents/hi/index.php on line 2
Warning: file_get_contents() [function.file-get-contents]: Failed to enable crypto in /Library/WebServer/Documents/hi/index.php on line 2
Warning: file_get_contents(https://ojooo.com) [function.file-get-contents]: failed to open stream: operation failed in /Library/WebServer/Documents/hi/index.php on line 2
正常file_get_content(https://yahoo.com);
工作正常。请帮助我
答案 0 :(得分:1)
问题是此站点您尝试将重定向调用到SSL(https)。然后你需要php_openssl.dll
模块。否则它不起作用。
修改您的有效php.ini
找到该行:
;extension=php_openssl.dll
并取消注释。
修改强>
你可以制作一个phpinfo()
并查看输出的顶部。在那里,您可以看到加载了哪个php.ini
文件。
答案 1 :(得分:1)
我遇到了同样的问题,最后通过file_get_contents
调用替换curl
解决了问题。
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
$content = curl_exec($curl);
curl_close($curl);
答案 2 :(得分:0)
您必须激活OpenSSL。
;extension=php_openssl.dll
删除;
extension=php_openssl.dll
在你的php.ini文件中。
答案 3 :(得分:-1)
您的服务器SSL证书似乎有问题,如果甚至应该是一个。
使用$hi = file_get_contents("http://ojooo.com");
代替