php执行curl错误:Could not resolve host: www.baidu.com;Name or service not known

解决PHP使用curl模块在php-fpm模式下遇到的Couldnotresolvehost错误,通过重启php-fpm服务及修改DNS配置实现远程资源正常获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

php执行curl错误:Could not resolve host: www.baidu.com; Name or service not known解决办法

在获取远程数据的时候,碰到一个很头疼的事情:

$url = 'https://www.baidu.com';
$curl = curl_init($url);
//设置选项
curl_setopt_array($curl, array(
    CURLOPT_TIMEOUT => 30, //超时时间
    CURLOPT_CUSTOMREQUEST => $method,// 请求方法
    CURLOPT_RETURNTRANSFER => true,// 返回内容
    CURLOPT_HEADER => false,// 返回header
    CURLOPT_FOLLOWLOCATION => true,// 自动重定向
    CURLOPT_SSL_VERIFYPEER => false,// 不校验证书
));
//执行请求
$output = curl_exec($curl);
$info = curl_getinfo($curl);
$error = curl_error($curl);
curl_close($curl);
echo $output; //输出 false
echo $error; //输出 Could not resolve host: www.baidu.com; Name or service not known

在php-fpm模式下用php的curl模块获取资源的时候,返回false,打印错误:Could not resolve host: www.baidu.com; Name or service not known, 简单翻译一下,就是获取不到这个域名的地址,什么鬼?然后进行错误排查:

  1. 检查服务器dns等解析均正常
  2. 用file_get_contents等方法在php-fpm模式下均失败,提示相同错误
  3. 同样代码,直接在服务器命令行方式执行,正常,包括file_get_contents等方法
  4. 见鬼了,初步怀疑是php的执行权限导致的问题

然后在google的强力搜索引擎下,查到外国论坛类似错误的解决方案,杀掉php-fpm进程,然后用systemctl restart php-fpm启动php-fpm成功,然后在尝试,嘿,终于成功了。

所以,记录下解决方法:用systemctl restart php-fpm方式启动php-fpm即可

还有另一种情况:DNS解析不对

检查DNS设置是否正确

vim /etc/resolv.conf

#设置DNS
nameserver 114.114.114.114
nameserver 8.8.8.8

记得给文件夹权限哦:

chmod 644 /etc/resolv.conf

保存文件,大功告成,如果按照上面问题不能解决,欢迎留言,一起学习一起进步。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值