【问题标题】:PHP sockets - connection refused (unusual cause?)PHP 套接字 - 连接被拒绝(异常原因?)
【发布时间】:2018-12-19 05:17:09
【问题描述】:

我遇到了一个触发“连接被拒绝”消息的 PHP 脚本问题。我正在尝试执行 file_get_contents('http://some_domain')。我也尝试过 fsockopen()、socket_create() 和 curl_exec(),但它们都会在我想要访问的某些特定站点上导致“连接被拒绝”。 (即它不是一个普遍的问题)。

  • 资源确实存在,我可以通过浏览器联系他们。
  • 如果我在本地服务器上运行 PHP,它会正常连接
  • 只有在我的任一远程服务器上运行代码时问题才会显现

  • 问题仅出现在部分网站,并非所有网站

  • 代码在几周前运行良好

一个共同的因素是,我试图访问的三个站点都在我安装的国内宽带路由器后面运行网络服务器(但使用不同的宽带提供商)。但是 - 正如我上面所说 - 我可以从我的浏览器中访问它们,并且代码直到几周前才有效。据我所知,这不是路由器中的防火墙问题。

我不确定这意味着什么 - 某些介入机器上可能存在防火墙问题吗?我怎么知道?

【问题讨论】:

  • 您能否通过远程主机上的浏览器访问这些站点?网址是否包含空格或特殊字符?你能在你的远程机器上卷曲(cli curl,而不是 php)它们吗?你确定国内IP地址仍然有效(你怎么保证)?
  • 你还没有发布一个字节的代码,所以很难说错误发生在什么时候。我可以想到各种会阻止该命令工作的事情:php 配置为不允许使用 file_get_contents 函数的 url,未安装套接字扩展,未安装 curl 扩展,防火墙阻止连接,远程机器的凭据不足等。
  • 他们甚至可能已经禁止了您执行请求的 IP 范围。
  • PHP 代码“有效”——我可以访问“随机 URL”;例如file_get_contents('google.co.uk') 将正确返回一个字符串。问题似乎来自 specific 服务器,访问 specific URL;不,网址没有特殊字符。即使只是使用域名,例如file_get_contents('one-of-my-domains.com') 如果我从 localhost 运行它,它将工作,但如果我将代码上传到我的其中一台服务器,fails (注)- 我可以访问其他 URL。这似乎是一个防火墙/IP阻塞的东西,但是如何固定呢?
  • 既然您声称自己是所有者 (one-of-my-domains.com),您应该能够检查我认为的任何防火墙设置。然后,您还应该能够确定所有其他提到的可能性。我不确定我们如何进一步帮助您...

标签: php connection-refused


【解决方案1】:

这个问题的答案原来只是一个服务器防火墙问题。新规则集已加载到 iptables。希望这对未来的询问者有用 - 检查 iptables 和您的服务器日志并为自己节省大量时间!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 2013-06-29
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多