【问题标题】:Connection time out while reading contents from a server从服务器读取内容时连接超时
【发布时间】:2014-12-07 21:38:30
【问题描述】:

嗨,这是我想要做的。

$contents = file_get_contents('http://123.34.56.123:3000/?location=Example'); //Not the original ip 
//Node script running on port 3000 

在 localhost 上一切正常,当我直接从浏览器访问此 url 但在我的网络服务器上,我会收到此错误

file_get_contents(http://123.34.56.123:3000/?location=Example) Failed to open stream: Connection timed out in ....

我已经尝试使用 curl 、套接字和文件流进行连接,但是虽然它在我的本地服务器上工作正常,但所有获得连接的东西都超时了

我也用过ini_set('max_execution_time', 300);,但没有任何帮助

注意:file_get_contents('http://www.google.com'); 在 Web 服务器上工作正常

任何人都可以帮助我理解为什么会出现此错误?我已经尝试了几乎所有我能解决的问题。

【问题讨论】:

  • 这个IP是公共IP吗?例如如果它是您网络内部的私有 IP,并且运行此代码的机器位于您的网络外部,它将无法工作。
  • @MarcB 但我可以直接从我的浏览器访问它,并且它在我的本地服务器上也可以正常工作,这意味着它是一个公共 IP 对吗?

标签: php file file-get-contents


【解决方案1】:

首先你需要检查你从资源中获取的内容是否被编码,这意味着如果内容是用 JSON 编码的,那么你需要使用 json 脚本来解码它,然后你就可以获取内容..

还要检查您正在使用的服务器的资源 URL 和端口。 如果您的端口 3000 被阻止,那么它也无法正常工作。

虽然它会帮助你。

【讨论】:

  • 我说它在我的本地服务器上工作正常,只是在我的网络服务器上的网络服务器上不工作,输出也不是 json 对象
【解决方案2】:

似乎我使用的服务器阻止了端口 3000 上的连接,这完全有道理,因为通常 Web 主机仅使用 80 和 443 端口来建立 i/o 连接。我联系了我的虚拟主机,他们解锁了 3000 端口,现在它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多