Php 从自己的域读取文件会导致404

Php 从自己的域读取文件会导致404,php,apache,Php,Apache,当我尝试使用curl或file\u get\u contents来读取类似于的内容时,我应该得到一个JSON响应,但是我得到了一个404错误。在我自己的领域之外使用curl或任何其他方法都非常有效 echo file_get_contents('http://example.com/python/json/'); => 404 echo file_get_contents('http://google.com'); => OK 同样的脚本在我的笔记本电脑上运行,但我不知道有什么区别

当我尝试使用
curl
file\u get\u contents
来读取类似于的内容时,我应该得到一个JSON响应,但是我得到了一个404错误。在我自己的领域之外使用curl或任何其他方法都非常有效

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

同样的脚本在我的笔记本电脑上运行,但我不知道有什么区别。

看起来example.com不是IP地址的默认域,文件内容使用HTTP/1.0而不是HTTP/1.1和/或不发送主机:头。请尝试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文件设置了错误的IP地址,例如.com。

可能与域有关?当然,你不想在这里透露它,所以你可能有点事情要做,但我想检查是否正常,你可以通过web浏览器(或者命令行工具,如GET,如果你只使用命令行)访问该URL


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

谢谢。我把域名改成了IP地址,我们都设置好了。我遇到了一个类似的问题,结果是在我们切换到静态之前,有人将/etc/hosts中的IP硬设置为旧的动态IP。谢谢你不经意间也帮了我!