Penyelesaian kepada kod ralat PHP curl 7: 1. Buka fail konfigurasi dalam direktori selinux 2. Cari baris "SELINUX=enforcing" dalam fail konfigurasi; ., mulakan semula pelayan.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3
Cara menyelesaikan php curl soalan kod ralat 7? Bagaimana untuk menyelesaikan ralat CURL (7): Tidak dapat menyambung ke hos?
Apabila memanggil antara muka pihak ketiga, semuanya ok apabila membuat panggilan secara setempat, tetapi gagal apabila membuat panggilan dalam talian!
Apabila antara muka pihak ketiga dipanggil secara setempat melalui kaedah curLRequest(), kaedah curl_errno() mengembalikan hasil 0, menunjukkan bahawa panggilan itu berjaya dan kaedah curl_errno() dalam talian mengembalikan hasil 7 , panggilan gagal.
Persekitaran:
Local wamp, dalam talian lnmp
Untuk menghapuskan masalah alam sekitar, cmd pada pelayan melaksanakan fungsi curl untuk membuat permintaan pos kepada pihak ketiga antara muka dan mendapati bahawa panggilan itu berjaya! Panggil skrip seperti berikut:
curl -i -X POST -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf-8' -H 'Authorization:**********************=' -d '{"voipAccount":"*********"}' 第三方接口的URL
Panggil kod utama antara muka pihak ketiga:
/** * @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); }
Selepas pelbagai penyiasatan, kod itu betul berkaitan dengan masalah konfigurasi dalam talian.
①Buka fail konfigurasi dalam direktori selinux
nano /etc/selinux/config
②Cari SELINUX=garis penguatkuasaan dalam fail konfigurasi
③Tukar SELINUX=disabled
④Simpan, keluar, mulakan semula pelayan
Ralat CURL 7 Gagal menyambung ke ralat "Kebenaran Ditolak" disebabkan apabila permintaan CURL disekat oleh beberapa tembok api atau sesuatu yang serupa
Apabila permintaan curl tidak sepadan dengan port standard, Anda akan menghadapi masalah ini
Contohnya jika anda melakukan curl pada port 1234 maka anda akan menghadapi masalah ini kerana URL untuk port 80 akan memberikan anda hasil yang sangat mudah.
Lazimnya ralat ini telah dilihat pada CentOS dan sistem pengendalian lain dengan 'selinux'
Anda perlu melumpuhkannya Atau menukar 'selinux' untuk membenarkan
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah kod ralat php curl 7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!