阿新

php执行curl错误:Could not resolve host: www.baidu.com; Name or service not known解决办法
php执行curl错误:Could not resolve host: www.baidu.com; Name o...
扫描右侧二维码阅读全文
24
2018/08

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

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成功,然后在尝试,嘿,终于成功了。简单分析下,因为我之前是直接执行php-fpm启动php-fpm的,所有问题的源头就是php-fpm的启动方式不同导致执行的权限不同导致出现了问题,至于为什么,哎,算了,解决问题就好了。

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

Last modification:August 24th, 2018 at 03:44 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment