谷歌和这里似乎已经讨论过这个问题,但我还没有找到解决方案。
一个非常简单的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。
如果您有任何想法,请随意!
答案 0 :(得分:9)
听起来您的配置不允许使用文件功能,由于安全问题,这些日常见。如果您有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