我正在使用运行Apache2 / PHP5的OS X 10.6服务器,当’fopen()’尝试从远程服务器检索文件时,PHP无法解析主机名.在命令行’fopen()’上以交互模式运行时,效果非常好.但是,当通过Web运行时,它将始终失败并显示错误:
failed to open stream: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
我无法找到这个问题的根源:’fopen()’在给定IP地址而不是主机名时在网络上工作; ‘gethostbyname()’在Web上运行时也会失败(它没有错误,它只返回给出的任何主机名来解析),但在交互模式下运行时也能正常工作.唯一的例外似乎是’dns_get_record()’,它在网络上或交互模式下运行时效果很好.
我一直试图在服务器上找到DNS问题但是挖掘,nslookup和ping所有工作,“scutil -r”表示远程服务器可以通过当前的DNS设置访问.关于问题可能在哪里的任何想法?
解决方法:
尝试使用’–disable-ipv6’选项重新编译PHP.然后,apachectl停止&启动(不是’apachectl restart’).我在Mac OS 10.6.4手动编译PHP5.3.3 Apache2.2.16时得到了相同的错误消息.