CentOS 上本地 php fopen 脚本返回 404 的问题

CentOS 上本地 php fopen 脚本返回 404 的问题

今天,我在服务器上运行使用file_get_contents或类似fopen功能的 php 脚本时遇到了一些问题。我认为这是一个 openssl 或防火墙错误,但我对服务器管理工​​作还不太熟悉,所以我需要一些帮助来调试它。我正在摆弄iptables设置csf firewall并尝试配置 sftp,proftpd突然它停止工作了。

一个简单的测试:(该 gif 文件可以通过浏览器正常加载)

echo file_get_contents("https://www.this-domain.com/logo.gif");
//...failed to open stream:HTTP request failed! HTTP/1.1 404 Not Found...

//However both of the following work absolutely fine:
//a local request to the same file:
echo file_get_contents("/home/user/domains/this-domain.com/private_html/media/logospin.gif");
//an external absolute url:
echo file_get_contents("https://www.google.com/");

在 php.ini 中,我有:allow_url_fopen = on& extension=php_openssl.dllon。有什么想法吗?

答案1

问题实际上是 DNS 问题。file_get_contents()由于某种原因,浏览器通过主名称服务器 (ns1 和 ns2) 路由,而我们的备份名称服务器 (ns3 和 ns4) 却奇怪地通过备份名称服务器 (ns3 和 ns4) 路由。与主名称服务器不同,备份名称服务器指向不同的服务器,该服务器尚未拥有相同的文件 - 因此出现不寻常的 404。

我在修补防火墙等之前的几个小时才设置了这些备份名称服务器,当它们传播时,看起来就像 ssh 命令已file_get_contents()离线一样。

相关内容