首页 >后端开发 >PHP问题 > 正文

如何解决php curl 错误码7的问题

原创2021-09-12 10:19:060814

php curl错误码7的解决办法:1、打开selinux目录下的config文件;2、找到config文件中的“SELINUX=enforcing”这行;3、更改“SELINUX=disabled”;4、重启服务器。

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

如何解决php curl 错误码7的问题?php - 如何解决CURL错误( 7 ): 无法连接到主机?

1. 问题描述

调用第三方接口,本地调用一切ok,线上调用失败!

本地通过curLRequest()方法调用第三方接口时,curl_errno()方法返回结果为0,显示调用成功,线上curl_errno()方法返回结果为7,调用失败。

环境:

本地wamp,线上lnmp

为了排除环境问题,在服务器上cmd执行curl函数对第三方接口进行了post请求,发现调用成功!调用脚本入下:

curl -i -X POST -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf-8' -H 'Authorization:**********************=' -d '{"voipAccount":"*********"}' 第三方接口的URL

调用第三方接口关键代码:

  /**
     * @param $requestUrl | String 请求的地址
     * @param bool $https
     * @param $headerInfo | array 头文件信息
     * @param string $rquestMethod | String 请求类型
     * @param $requestData | json 发送请求的数据
     * @return mixed     */
    public function curLRequest($requestUrl,$requestData,$https=true,$rquestMethod='post')
    {        $headerInfo=[            'Accept:application/json',
            'Content-Type:application/json;charset=utf-8',
            'Authorization:'.self::$auth
        ];        $ch = curl_init();//初始化
        curl_setopt($ch, CURLOPT_URL, $requestUrl);//设置访问的URL
        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headerInfo); // 设置头信息
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//只获取页面内容,但不输出
        if($https){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//不做服务器认证
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//不做客户端认证        }        if($rquestMethod == 'post'){
            curl_setopt($ch, CURLOPT_POST, true);//设置请求是POST方式
            curl_setopt($ch, CURLOPT_POSTFIELDS, $requestData);//设置POST请求的数据        }        $str = curl_exec($ch);//执行访问,返回结果
        if(curl_errno($ch)){            Log::write('结果=========================================================:'.curl_errno($ch));            return ['statuscode' => -1, 'data' => 'curl请求错误,错误码为'.curl_errno($ch)];
        }        Log::write('结果=========================================================:'.curl_errno($ch));        Log::write('返回结果:'.$str);
        curl_close($ch);//关闭curl,释放资源
        return json_decode($str,true);
    }

经过各种排查,代码无误,我的问题为线上环境的相关配置问题。

2. 解决办法

打开selinux目录下的config文件 

nano /etc/selinux/config

找到config文件中的SELINUX=enforcing这行

更改SELINUX=disabled

保存,退出,重启服务器

3.小结

CURL错误 7未能连接到权限被拒绝"错误是由于CURL请求被某些防火墙或者类似的东西阻塞时造成的。

当curl请求与标准端口不匹配时,你将面临这个问题。

例如如果你在端口 1234上做了 curl,那么你将面临这个问题,因为端口 80的URL会给你带来很容易的结果。

最常见的这个错误已经在CentOS和其他带有'selinux'的操作系统上看到了。

你需要禁用或者将'selinux'改为允许

推荐学习:《PHP视频教程

以上就是如何解决php curl 错误码7的问题的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 相关标签:php curl
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    作者信息

    藏色散人

    好好学习天天向上!

    最近文章
    php system 不执行怎么办661
    laravel怎么去掉server.php929
    php怎么消除notice150
    推荐视频教程
  • PHP开发APP接口项目实战PHP开发APP接口项目实战
  • PHP搭建CMS系统实战课程PHP搭建CMS系统实战课程
  • PHP的速通之路PHP的速通之路
  • 视频教程分类