我正在尝试执行一个简单的PHP调用来加载网页的内容:
$result = file_get_contents("http://www.google.com");
返回的结果是找不到奇怪的文件错误:
Warning: file_get_contents(http://www.google.com): failed to open stream: No such file or directory in /var/www/html/test.php on line 5
我的php.ini上有“allow_url_fopen = On”,没有可能改变目录设置的.htaccess文件。有任何想法吗?我以前在不同的服务器上从未遇到过这个功能的问题。
答案 0 :(得分:1)
显然HTTP流包装器不存在,这会导致此错误。
print_r(stream_get_wrappers());
Array
(
[0] => php
[1] => file
[2] => data
[3] => compress.zlib
)
我不确定它是如何删除或如何恢复它,但这可以解释它!我已尝试过stream_wrapper_restore('http'),以防它以某种方式取消注册,但这没有效果。
答案 1 :(得分:0)
您是否在更改“allow_url_fopen”时重新初始化了您的网络服务器?
OR
您正在查询的服务器上可能不允许使用用户代理“PHP”。
OR
从PHP手册页面:注意:如果要打开带有特殊字符的URI,例如空格,则需要使用urlencode()对URI进行编码。
您可以像这样对php.ini设置进行测试......
if (ini_get('allow_url_fopen') == '1') {
// use fopen() or file_get_contents()
} else {
// use curl or your custom function
}
答案 2 :(得分:0)
我认为这是某种代理效应 你用代理吗?如果是这种情况,则必须使用代理详细信息创建流上下文。
答案 3 :(得分:0)
不确定,但请尝试:
if(($fp=fopen('http://www.google.com/', 'rb'))!=null)
{
// for php5 and up or use fread for php4
$contents = stream_get_contents($fp);
fclose($fp);
}