PHP fopen函数超时了吗?

时间:2009-05-19 09:33:25

标签: php fopen

任何想法为什么如果文件在我的服务器上并且我知道网址是正确的,fopen会为文件超时?

更新:抱歉,我应该提到这是在php中。 代码是:

fopen($url, 'r');

如果我输入文件的相对路径,但是如果$ url是我服务器中的网址(但它适用于google.com),则无效。谢谢你的帮助。

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

6 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

您是否尝试使用同一服务器上运行的程序中的HTTP协议从您自己的服务器下载文件

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

  1. 服务器确实需要很长时间才能发回答案,或者
  2. 正在阻止TCP连接
  3. 例如,如果这些查询来自以太网接口,则本地防火墙规则可能仅允许访问www.example.com,但本地连接会尝试通过环回接口。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

fopen最适合与本地文件一起使用,因为它不“知道”如何处理网络资源的特性。

答案 4 :(得分:0)

检查documentation of fopen上的评论。那里有很多黄金。

答案 5 :(得分:0)

我花了很多时间来解决这个问题,但在这里我找到了它,感谢Alnitak。 在网址中使用localhost打开文件而不是主机名对我来说是个窍门。