fopen因getaddrinfo失败而失败

时间:2011-08-01 11:04:35

标签: php

我遇到以下代码问题:

function http_file_exists($url){
$f=fopen($url,"r");
if($f){
    fclose($f);
    return true;
} else {
  return false;
}
     

}   $ url =“http://www.minhemmelighed.dk/Graphics/Products/55.jpg”;

     

打印http_file_exists($ url);

它返回的错误是:

  

警告:fopen():php_network_getaddresses:getaddrinfo失败:第6行的/srv/http/webshop3/image_scraper/test.php中未知名称或服务警告:fopen(http://www.minhemmelighed.dk/Graphics /Products/55.jpg):无法打开流:php_network_getaddresses:getaddrinfo failed:第6行的/srv/http/webshop3/image_scraper/test.php中未知名称或服务

我该怎么办?我已多次重启服务器。

记录:

我可以通过浏览器访问相关网站

我在Arch Linux上运行LAMP

2 个答案:

答案 0 :(得分:7)

重新启动UNIX服务器极不可能解决问题。看起来您需要检查服务器上的名称服务器配置。在Web服务器的控制台上(以php用户身份登录,可能是apachewww-data),测试

dig www.minhemmelighed.dk

如果输出错误消息,请检查/etc/resolv.conf。注释掉所有行并添加

nameserver 8.8.8.8 # Google's public DNS server

如果这样可以解决问题,请与原始名称服务器的管理员联系(或者只使用Google的8.8.8.8)。如果没有,请检查您的连接和防火墙。

答案 1 :(得分:3)

对于那些像CentOS一样运行非常锁定的发行版的人来说,这可能是我在系统上发现的SELinux的安全功能。

在命令提示符下键入:

getsebool -a | grep httpd

并寻找

httpd_verify_dns - >关闭

如果是这种情况,则需要使用以下命令将其设置为

setsebool httpd_verify_dns = 1

或永久与:

setsebool -P httpd_verify_dns = 1

记得重新启动httpd:

服务httpd重启 每次更改后

我希望有帮助

标记