


Bagaimana untuk membetulkan isu Pihak Berkuasa Sijil HTTP Curl PHP pada Windows
Permintaan HTTPS yang berjaya melibatkan klien HTTP yang mengesahkan sijil TLS yang disediakan pelayan terhadap senarai akar yang diketahui dan dipercayai sijil. Sambungan PHP Curl tidak berbeza; yang Curl sambungan menggunakan libcurl untuk membuat permintaan HTTPS dan libcurl, yang seterusnya menggunakan perpustakaan TLS seperti OpenSSL untuk mengesahkan permintaan.
Sambungan Curl memerlukan fail yang sah yang mengandungi semua sijil akar yang dipercayai untuk melengkapkan pengesahan HTTPS dan PHP mendedahkan ini sebagai arahan dalam fail php.ini.
Pada Linux, BSD dan macOS, libcurl boleh lalai kepada akar sistem sijil, tetapi ini tidak boleh dilakukan pada Windows kerana Windows melakukannya tidak datang dengan satu fail yang mengandungi semua akar sistem sijil.
Artikel ini membincangkan dua kemungkinan pendekatan untuk berjaya membuat permintaan HTTPS dengan sambungan Curl dan perkara yang tidak boleh dilakukan yang boleh menyebabkan permintaan HTTPS tidak selamat.
Mengapa ia gagal
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); // false curl_error($ch); // SSL certificate problem: unable to get local issuer certificate
Jika panggilan curl_exec gagal dengan respons palsu dan jika curl_error menunjukkan masalah sijil SSL: tidak dapat mendapatkan setempat ralat sijil pengeluar, ini bermakna Curl tidak diberikan fail yang mengandungi sijil akar atau ia tidak dapat menemuinya.
Ralat ini jarang berlaku pada sistem Linux, BSD dan macOS, tetapi agak biasa pada Windows kerana tiada fail yang ditetapkan untuk mendapatkan root sijil, dan PHP tidak menghantar senarai sijil akar padanya miliknya.
Penyelesaiannya ialah dengan menyediakan fail yang mengandungi akar terkini sijil, atau idealnya, biarkan Curl menghuraikan stor akar asli yang sistem pengendalian asas menyediakan.
Gunakan Pihak Berkuasa Sijil Asli
Pada Curl 7.71 dan lebih baru, adalah mungkin untuk menetapkan Curl pilihan untuk meminta Curl menggunakan sijil akar asli (sistem). Ini berfungsi walaupun pada Windows, di mana Curl menghuraikan sijil akar sistem dan menggunakannya.
Apabila pilihan CURLOPT_SSL_OPTIONS ditetapkan kepada CURLSSLOPT_NATIVE_CA atau bitmask yang mengandungi bit tersebut, Curl cuba menggunakan native stor sijil akar, tertakluk kepada keupayaan dan versi pustaka TLS yang mendasari.
Ini ialah pembetulan yang disyorkan, jika sambungan Curl dibina dengan Curl 7.71 atau lebih baharu dan PHP 8.2 dan lebih baharu.
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); curl_exec($ch);
Perhatikan coretan di atas tidak menandakan Versi Curl dan PHP versi, dan menganggap kedua-dua keperluan versi PHP dan Curl dipenuhi. The berikut ialah contoh yang menunjukkan penambahan pilihan Curl secara bersyarat:
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if (defined('CURLSSLOPT_NATIVE_CA') && version_compare(curl_version()['version'], '7.71', '>=')) { curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); } curl_exec($ch);
Muat turun dan simpan fail cacert.pem
Untuk aplikasi yang dijalankan pada versi PHP lebih lama daripada 8.2 (di mana CURLSSLOPT_NATIVE_CA pemalar tidak tersedia), atau apabila versi Curl lebih lama daripada 7.71, penyelesaian alternatif yang disyorkan ialah memuat turun Curl-compatible fail sijil akar dan konfigurasikan PHP atau permintaan Curl untuk menggunakannya.
Projek Curl mengekalkan senarai sijil terkini. Lihat Sijil CA yang diekstrak daripada Mozilla.
Muat turun fail cacert.pem
- Alihkan fail ke direktori yang boleh diakses oleh PHP dan pelayan web. Contohnya, ke C:/php/cacert.pem.
Edit fail php.ini dan ubah suai entri curl.cainfo untuk menghala ke laluan mutlak ke fail cacert.pem.
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); // false curl_error($ch); // SSL certificate problem: unable to get local issuer certificate
Salin selepas log masukSalin selepas log masukSecara pilihan, mulakan semula pelayan Web (seperti Apache) untuk memuatkan semula fail INI.
Kelemahan pendekatan ini ialah fail cacert.pem mesti dikemas kini secara rutin. The cacert.pem fail yang disediakan oleh projek Curl, sebagai contoh, diekstrak daripada akar kedai yang diselenggara oleh Mozilla. Secara purata, senarai ini dan fail mendapat dikemaskini 4-5 kali setahun. Untuk memastikan keserasian dengan akar terkini senarai sijil, pastikan anda mengemas kini salinan tempatan fail ini kerap
Jika tidak mungkin untuk mengubah suai fail INI, nyatakan laluan mutlak ke fail cacert.pem dalam permintaan Curl juga:
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); curl_exec($ch);
Pada PHP 8.2 dengan Curl 7.77 , adalah mungkin untuk rentetan yang mengandungi kandungan cacert.pem dengan pilihan CURLOPT_CAINFO_BLOB.
Atas ialah kandungan terperinci Bagaimana untuk membetulkan isu Pihak Berkuasa Sijil HTTP Curl PHP pada Windows. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.
