You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7独立服务器DNS解析失败,PHP爬虫脚本运行报错求助

修复CentOS7服务器DNS解析失败问题

第一步:确认系统层面的DNS解析问题

先通过终端命令验证是不是整个服务器都无法解析域名,而非PHP脚本单独的问题:

  • 执行 ping www.bbc.com,如果提示Name or service not known,说明系统DNS确实存在问题
  • 执行 nslookup www.bbc.com 或 dig www.bbc.com,如果返回server can't find www.bbc.com: NXDOMAIN,进一步确认是DNS配置错误

第二步:临时修改DNS配置测试(无永久影响)

先临时替换为公共DNS服务器测试,重启后会恢复原有配置,不会破坏现有设置:

  1. 打开DNS配置文件:vi /etc/resolv.conf
  2. 删除原有无效的nameserver行,添加两行公共DNS:
    nameserver 8.8.8.8
    nameserver 1.1.1.1
    
  3. 保存退出(按Esc,输入:wq回车)
  4. 再次执行ping www.bbc.com,如果能正常收到回复,说明问题出在DNS服务器配置,接下来做永久配置

第三步:永久配置DNS服务器

根据服务器网络管理方式选择对应操作:

方式一:使用NetworkManager(默认情况)

  1. 找到网卡配置文件,一般在/etc/sysconfig/network-scripts/目录下,文件名类似ifcfg-eth0或ifcfg-enp0s3,用命令查看:ls /etc/sysconfig/network-scripts/ifcfg-*
  2. 编辑该文件:vi /etc/sysconfig/network-scripts/ifcfg-eth0
  3. 添加或修改以下内容:
    DNS1=8.8.8.8
    DNS2=1.1.1.1
    PEERDNS=no
    
    PEERDNS=no是为了防止DHCP自动覆盖你的DNS设置
  4. 保存后重启网络服务:systemctl restart network

方式二:禁用自动修改DNS(适合不用NetworkManager的情况)

如果直接修改resolv.conf后被系统自动覆盖,给文件加锁防止修改:

  1. 先按第二步修改好/etc/resolv.conf的内容
  2. 执行命令:chattr +i /etc/resolv.conf
    这样系统就无法自动修改这个文件,配置永久生效

第四步:排查其他可能影响的因素

  • 防火墙:临时关闭防火墙测试:systemctl stop firewalld,如果能解析,就开放DNS端口:
    firewall-cmd --add-service=dns --permanent
    firewall-cmd --reload
    
  • SELinux:临时关闭测试:setenforce 0,如果正常,再执行setenforce 1恢复,然后检查SELinux日志是否有相关限制(一般很少影响DNS解析)

验证PHP脚本是否恢复正常

修改完DNS后,重新运行你的爬虫脚本,或者创建一个简单的测试脚本:

<?php
var_dump(gethostbyname('www.bbc.com'));
?>

如果输出是正确的IP地址,说明DNS问题已解决,你的爬虫脚本应该能正常运行了

内容的提问来源于stack exchange,提问作者Yogus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:20:53