我遇到以下代码问题:
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
答案 0 :(得分:7)
重新启动UNIX服务器极不可能解决问题。看起来您需要检查服务器上的名称服务器配置。在Web服务器的控制台上(以php用户身份登录,可能是apache
或www-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重启 每次更改后
我希望有帮助
标记