霜天部落 | 专注PHP研发,研究LAMP高性能架构部署与优化

file_get_contents(): failed to open stream: HTTP request failed!的解决方案

今天是用file_get_contents()读取一个远程文件,远程文件是存在的,但返回了这个错误:“file_get_contents(): failed to open stream: HTTP request failed!”,有时候成功有时候失败。感觉挺蹊跷的。

网上查了了一下,遇到这个问题的朋友不少,大多都给出了答案。这里我总结一下解决办法:

一、修改php.ini,把allow_url_fopen启用,改成 allow_url_fopen = On。

我的服务器上allow_url_fopen一直是启用的,所以还需要下一个办法。

二、php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0)来模拟浏览器就可以了,即:user_agent=“Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0)”。

到这里可以解决绝大数这类的问题,但如果很不幸,你的问题依然存在,那么还是使用其他程序吧。

三、使用fsockopen,curl等函数库替换file_get_contents()。