1

我正在尝试执行一个简单的 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

4 回答 4

1

显然 HTTP 流包装器不存在,这会导致此错误。

print_r(stream_get_wrappers());

Array
(
    [0] => php
    [1] => file
    [2] => data
    [3] => compress.zlib
)

我不确定它是如何被删除或如何恢复的,但这可以解释!我试过 stream_wrapper_restore('http') 以防它以某种方式被取消注册,但这没有效果。

于 2009-08-17T17:35:12.813 回答
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);
}
于 2009-08-17T17:25:29.197 回答
0

您是否在更改“allow_url_fopen”时重新初始化了您的网络服务器?

或者

您正在查询的服务器上可能不允许使用用户代理“PHP”。

或者

来自 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
}
于 2009-08-17T16:36:02.790 回答
0

我认为这是某种代理效应。
你用代理吗?如果是这种情况,您必须使用代理详细信息创建流上下文。

于 2009-08-17T16:39:51.643 回答