0

知道为什么如果文件在我的服务器上并且我知道 url 是正确的,为什么 fopen 会超时?

更新:对不起,我应该提到这是在 php.ini 中。代码是:

fopen($url, 'r');

如果我输入文件的相对路径,它会起作用,但如果 $url 是我服务器中的 url 则不起作用(但它适用于 google.com)。谢谢您的帮助。

阿莱特尼克的回答是对的。只有当我通过以太网接口访问我自己的服务器文件时才会出现此问题。我怎样才能解决这个问题?我需要能够从以太网接口访问文件,因为 url 是动态加载的(它是从 wordpress cms 生成的,所以从技术上讲,url 在我的服务器上并不作为文件存在)

4

6 回答 6

6

你可以使用 ini_set('default_socket_timeout',2); 在打开 fopen $url 之前。这实际上设置了默认的套接字连接超时而不响应。Stream_set_timeout 在通过 fopn 或套接字打开函数建立的流上设置超时。试试这个可能对你有帮助。

于 2009-05-19T09:39:37.427 回答
3

您似乎正在尝试使用 HTTP 协议从同一服务器上运行的程序从您自己的服务器下载文件?

如果是这样,超时问题很可能与 Web 服务器或网络配置有关。超时通常只会发生,因为:

  1. 服务器确实需要很长时间才能发回答案,或者
  2. TCP 连接被阻塞

例如,www.example.com如果这些查询来自以太网接口,您的本地防火墙规则可能只允许访问,但本地建立的连接会尝试通过环回接口。

于 2009-05-19T10:16:29.550 回答
1

也许您的“allow_url_fopen”设置为“关闭”检查您的 php.ini 文件或 phpinfo()

于 2009-05-19T13:52:13.343 回答
0

如果您尝试获取 URL 的 HTML,我建议使用 curl 而不是 fopen。

fopen 最好用于本地文件,因为它不“知道”如何处理网络资源的特性。

于 2009-05-19T10:11:40.513 回答
0

检查对fopen 文档的评论。里面有很多金子。

于 2009-05-19T10:13:27.077 回答
0

我花了很长时间才解决这个问题,但在这里我找到了,感谢 Alnitak。在 URL 中使用 localhost 而不是主机名打开文件是我的诀窍。

于 2011-03-10T12:54:53.660 回答