带有HTTP的file_get_contents:没有这样的文件或目录

时间:2009-08-17 16:24:11

标签: php file-get-contents

我正在尝试执行一个简单的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文件。有任何想法吗?我以前在不同的服务器上从未遇到过这个功能的问题。

4 个答案:

答案 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);
}