PHP:file_get_contents读取https地址报错failed to open stream…
服务器环境: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安装文件,怎么会出现这样的情况呢?难得是与服务器的系统有关系吗?具体原因就不追究了,成功解决了就皆大欢喜。