从自己的域中读取文件会产生404

时间:2008-10-30 18:55:47

标签: php apache

当我尝试使用curlfile_get_contentshttp://example.com/python/json/读取http://example.com/之类的内容时,我应该收到JSON响应,但我得到404错误。使用curl或我自己域外的任何其他方法都可以很好地工作。

echo file_get_contents('http://example.com/python/json/'); => 404
echo file_get_contents('http://google.com'); => OK

同样的脚本适用于我的笔记本电脑,但我无法弄清楚它的区别。

2 个答案:

答案 0 :(得分:2)

看起来example.com不是IP地址的默认域,而file_get_contents使用HTTP / 1.0而不是HTTP / 1.1和/或不发送Host:头。请尝试使用PHP中的curl支持:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://example.com/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);

或者,/ etc / hosts文件为example.com设置了错误的IP地址。

答案 1 :(得分:0)

与域名有关,也许?当然,你不想在这里透露它,所以你可能有一点要做,但我想完整性检查是你可以通过网络浏览器(或GET等命令行工具)访问该URL '仅限命令行。)

你也可以ping和/或traceroute到域 - 结果可能很有启发性。