我对这个问题束手无策了。我的一个服务器(Amazon ec2 实例)上运行着 Apache,但我似乎无法在 PHP 中解析域名。例如,fopen('http://www.google.com', 'r') 会抛出“php_network_getaddresses: getaddrinfo failed: Name or service not known”错误,但如果我将 URL 更改为 Google 的某个 IP 地址,则可以正常工作。在远程服务器上 ping www.google.com 也没问题,因此我知道它不是“外部系统”的问题。
奇怪的是,我已经让这台服务器运行了一段时间而没有遇到任何问题,我无法想到自己做过什么可能会导致这种情况发生。
在我的 php.ini 文件中,allow_url_fopen = On,为了确保它被应用,我从同一脚本中运行了 phpinfo(),并且 allow_url_fopen 确实已经打开了。
还有什么其他的建议吗?是否可能是某种文件权限问题导致这个问题?因为我确实在我的 Web 应用程序内更改了一些文件权限,我可能会输错东西,并意外更改应用程序之外的某些文件的权限/所有权。虽然这种可能性很小,但我无法想到我在系统上做了什么会导致它停止工作。
奇怪的是,我已经让这台服务器运行了一段时间而没有遇到任何问题,我无法想到自己做过什么可能会导致这种情况发生。
在我的 php.ini 文件中,allow_url_fopen = On,为了确保它被应用,我从同一脚本中运行了 phpinfo(),并且 allow_url_fopen 确实已经打开了。
还有什么其他的建议吗?是否可能是某种文件权限问题导致这个问题?因为我确实在我的 Web 应用程序内更改了一些文件权限,我可能会输错东西,并意外更改应用程序之外的某些文件的权限/所有权。虽然这种可能性很小,但我无法想到我在系统上做了什么会导致它停止工作。
setsebool -P nis_enabled 1
,setsebool -P httpd_can_network_connect 1
。 - Charlie Schliesser