【发布时间】:2014-07-14 03:00:13
【问题描述】:
我对此一无所知。我在我的服务器(一个亚马逊 ec2 实例)上运行 apache,我似乎无法解析 php.ini 中的域名。例如 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 实际上是打开的。
还有什么我应该尝试的想法吗?某种文件权限问题会导致这种情况吗?因为我确实在我的 webapp 中更改了一些文件权限,并且我想可能是我输入了错误的内容并意外更改了应用程序外部某些文件的权限/所有权。它极不可能,但我想不出我在系统上所做的任何其他事情可能会阻止它工作。
【问题讨论】:
-
如果我从服务器上的命令行运行 php 脚本域名解析很好,所以我猜它与 apache 有关系?
-
我在网上发现了一堆有同样问题的人的帖子。对于他们中的大多数人来说,重新启动服务器可以解决它,但对我来说不是。对于其他人来说,这是一个权限问题,但我确保 /etc/resolv.conf 对每个人都有读取权限,并且无论如何我都以 root 身份运行 Apache...
-
SELinux 政策怎么样?
setsebool -P nis_enabled 1,setsebool -P httpd_can_network_connect 1.