PHP fopen函数超时?

PHP fopen函数超时?,php,fopen,Php,Fopen,如果文件在我的服务器上并且我知道url是正确的,你知道为什么fopen会超时吗 更新:对不起,我应该提到这是在php。 代码是: fopen($url, 'r'); 如果我为文件输入一个相对路径,它就可以工作,但如果$url是我服务器中的url,它就不能工作(但它适用于google.com)。谢谢你的帮助 阿莱特尼克的回答是正确的。只有当我通过以太网接口访问自己的服务器文件时,问题才会出现。我怎样才能解决这个问题?我需要能够从ethernet接口访问该文件,因为url是动态加载的(它是从wor

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

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

fopen($url, 'r');
如果我为文件输入一个相对路径,它就可以工作,但如果$url是我服务器中的url,它就不能工作(但它适用于google.com)。谢谢你的帮助

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

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

如果你想获取URL的HTML,我建议使用curl而不是fopen


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

查看。这里面有很多黄金。

看来您正试图使用HTTP协议从您自己的服务器上下载文件,而该服务器上运行的程序就是这样的

如果是这样,超时问题可能与web服务器或网络配置有关。超时通常只发生在以下情况之一:

  • 服务器确实需要很长时间才能发回答案,或者
  • TCP连接被阻止
  • 例如,可能是您的本地防火墙规则仅允许从以太网接口访问
    www.example.com
    ,但本地建立的连接将尝试通过环回接口进行访问。

    可能您的“allow\u url\u fopen”设置为“Off”
    检查您的php.ini文件或phpinfo()

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

    你是在问C函数fopen吗?如果是这样,fopen用于打开文件,而不是URL。你说的“超时”是什么意思?正如尼尔所说的,你需要添加更多的细节。你说的是什么函数并不明显,你甚至没有说你使用的是哪种编程语言(标记不充分)。哇,你说得对。我怎样才能解决这个问题?我需要能够从ethernet接口访问该文件,因为url是动态加载的(它是从wordpress cms生成的,所以url在我的服务器上并不是作为文件存在的),要解决这个问题,我们需要更多地了解到底是什么阻塞了流量。如果请求相同的文件,但URL中包含localhost而不是主机名,会发生什么情况?如果由于基于名称的虚拟主机而无法正常工作,请将网站名称放入地址127.0.0.1的主机文件中,以获得无限制初始化设置(“默认套接字超时”,-1)@Virgiliargcia您在初始化设置->ini设置中有输入错误。但是它很好用…谢谢