PHP:file_get_contents读取https地址报错failed to open stream…

作者: 坎肩儿 分类: php代码,故障排查 发布时间: 2015-06-17 16:58

服务器环境:win2003、PHP5.2.2、MySQL5.0.45

问题描述:

1、$file_contents = file_get_contents(‘http://www.baidu.com’);echo $file_contents;

正常。

2、$file_contents = file_get_contents(‘https://www.baidu.com’);echo $file_contents;

报错:Warning: file_get_contents(https://www.baidu.com) [function.file-get-contents]: failed to open stream: …

通过上面的两个地址,不难看出,file_get_contents在读取https的URL时会报错,百度找答案。

第一步:百度找到的解决方案如下:

在php.ini中找到并修改:
extension=php_openssl.dll
allow_url_include = On
user_agent=”PHP”

第二步:重启之后,无效。由此判断,是否是openssl没有开启呢?故又搜索:win2003开启php_openssl 无效,找到如下的答案:

将php文件夹下的:php_openssl.dll,ssleay32.dll,libeay32.dll 3个文件拷贝到 WINDOWS\system32\ 文件夹下。

照此操作,再次重启之后,页面一直刷新,根本停不下来,但是换成http的URL就正常,有变化就好,说明有效果了。

第三步:再次返回第一步,我的另一台服务器正常,但是配置是这样的:allow_url_include = Off,;user_agent=”PHP”,照此修改,重启后一切正常。

OK,问题成功解决。非常奇怪,同样都是系统默认的配置,一样的PHP安装文件,怎么会出现这样的情况呢?难得是与服务器的系统有关系吗?具体原因就不追究了,成功解决了就皆大欢喜。