Home > Article > Backend Development > How to solve the problem of php curl error code 7
Solution to php curl error code 7: 1. Open the config file in the selinux directory; 2. Find the "SELINUX=enforcing" line in the config file; 3. Change "SELINUX=disabled"; 4. , restart the server.
The operating environment of this article: Windows7 system, PHP7.1 version, DELL G3 computer
How to solve php curl error code 7 question? How to resolve CURL error (7): Unable to connect to host?
When calling the third-party interface, everything is ok when calling locally, but the online call fails!
When the third-party interface is called locally through the curLRequest() method, the curl_errno() method returns a result of 0, indicating that the call is successful, and the online curl_errno() method returns a result of 7 , the call failed.
Environment:
Local wamp, online lnmp
In order to eliminate environmental problems, I executed the curl function on the server cmd to make a post request to the third-party interface and found that the call was successful. ! Call the script as follows:
curl -i -X POST -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf-8' -H 'Authorization:**********************=' -d '{"voipAccount":"*********"}' 第三方接口的URL
Call the key code of the third-party interface:
/** * @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); }
After various investigations, the code is correct. My problem is related to the configuration of the online environment.
①Open the config file in the selinux directory
nano /etc/selinux/config
②Find the SELINUX=enforcing line in the config file
③Change SELINUX=disabled
④Save, exit, restart the server
CURL Error 7 "Failed to connect to Permission Denied" error is caused when the CURL request is blocked by some firewall or something similar.
When the curl request does not match the standard port, you will Facing this problem.
For example if you do curl on port 1234 then you will face this problem because the URL for port 80 will give you very easy results.
Most commonly this error has been seen on CentOS and other operating systems with 'selinux'.
You need to disable or 'selinux' is changed to allow
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of How to solve the problem of php curl error code 7. For more information, please follow other related articles on the PHP Chinese website!