如何在代理后面使用file_get_contents()?

时间:2010-10-14 09:43:55

标签: php apache file-get-contents

当我们使用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()

这可以用类似的方法修复吗?

4 个答案:

答案 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)