PHP5无法打开流:使用fopen时HTTP请求失败错误

时间:2011-01-05 20:20:26

标签: php fopen

谷歌和这里似乎已经讨论过这个问题,但我还没有找到解决方案。

一个非常简单的fopen给了我一个

  

PHP警告:fopen(http://www.google.ca):无法打开流:HTTP请求失败!“。

我提取的网址并不重要,因为即使我提取http://www.google.com它也不起作用。完全相同的脚本适用于不同的服务器。失败的是Ubuntu 10.04和PHP 5.3.2。这在我的脚本中不是问题,它在我的服务器中有所不同,或者它可能是PHP中的错误。

我尝试在php.ini中使用user_agent但没有成功。我的allow_url_fopen设置为On。

如果您有任何想法,请随意!

5 个答案:

答案 0 :(得分:9)

听起来您的配置不允许使用文件功能,由于安全问题,这些日常见。如果您有cURL库,我建议您尝试使用它们。

PHP: cURL

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.google.ca/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$file = curl_exec($ch);
curl_close($ch);

echo $file;

答案 1 :(得分:1)

检查您的php.ini配置是否设置为允许fopen打开外部URL:

allow_url_fopen "1"

http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

答案 2 :(得分:1)

我不确定这是不是问题,但我知道过去我使用fopen打开URL时遇到问题,通常是因为php.ini的allow_url_fopen或其他未知的安全设置

你可能想在PHP中尝试cURL,这通常对我有用,你可以通过谷歌搜索找到一个很容易的例子。

答案 3 :(得分:0)

检查phpinfo输出http下的Registered PHP Streams是否存在?

答案 4 :(得分:0)

您是否收到了#34; HTTP请求失败"没有进一步细节?套接字超时可能已过期。默认为60秒。请参阅:http://php.net/manual/en/function.socket-set-timeout.php