当我们使用file_get_contents时,PHP用什么来解析域名(本地DNS ??)。
我问,因为我收到了这个错误:
警告: 的file_get_contents(http://external-domain.com) [function.file-get-contents]:失败 打开流:连接尝试 失败,因为关联方做了 一段时间后没有正确回应 时间,或建立的连接失败 因为连接主机失败了 响应。在第11行的C:\ test.php
我之前在内部网址file_get_contents()
上使用http://localhost:9090
时设法解决了这个确切错误,问题是我的主机中没有localhost到127.0.0.1的映射我的Windows机器上的文件。添加此内容后,我可以在内部网址上使用file_get_contents()
。
这可以用类似的方法修复吗?
答案 0 :(得分:3)
你是代理人吗?如果是这样,你需要告诉PHP使用它 stream_context_set_default或将使用stream_context_create创建的上下文作为第三个参数传递给file_get_contents。
答案 1 :(得分:2)
我遇到了这个问题,原因是php.ini中default_socket_timeout的值太小了。
我会尝试在你的情况下加倍它的价值,看看它是否解决了这个问题。
答案 2 :(得分:1)
我有一个类似的问题(但在同一台服务器上的文件)花了我几个小时才发现。这就是诀窍:
$fileUrl = "http://selfDomain.com/file.txt";
//external path to local path fix
$fileUrl = str_replace($_SERVER["SERVER_NAME"], $_SERVER["LOCAL_ADDR"], $fileUrl);
答案 3 :(得分:0)
只需使用此功能,您的问题就解决了。
file_get_contents("http://external-domain.com",true)