


Bagaimana untuk membetulkan isu Pihak Berkuasa Sijil HTTP Curl PHP pada Windows
Nov 11, 2024 pm 12:24 PMPermintaan 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
Secara 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

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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

PhphasthreecommentStyles: //,#forsingle-lineand/.../formulti-line.usecommentstoexplainwhycodeexists ,notwhatitdoes.marktodo/fix MeitemsanddisableCodeTemporaryDuringDebugging.avoidover-CommentingsImpleLogic.writeConcise, GrammaticallyCorrectcommentsandu

Langkah -langkah utama untuk memasang PHP pada Windows termasuk: 1. Muat turun versi PHP yang sesuai dan menyahpepijatnya. Adalah disyorkan untuk menggunakan versi Threadsafe dengan versi Apache atau nonthreadSafe dengan nginx; 2. Konfigurasi fail php.ini dan tukar nama php.ini-development atau php.ini-pengeluaran kepada php.ini; 3. Tambah laluan PHP ke laluan pembolehubah persekitaran sistem untuk penggunaan baris arahan; 4. Uji sama ada PHP dipasang dengan jayanya, laksanakan PHP-V melalui baris arahan dan jalankan pelayan terbina dalam untuk menguji keupayaan parsing; 5. Jika anda menggunakan Apache, anda perlu mengkonfigurasi p dalam httpd.conf

Sintaks asas PHP termasuk empat mata utama: 1. Tag PHP mesti berakhir, dan penggunaan tag lengkap disyorkan; 2. Echo dan cetak biasanya digunakan untuk kandungan output, di antaranya Echo menyokong pelbagai parameter dan lebih cekap; 3. Kaedah anotasi termasuk //, # dan //, untuk meningkatkan kebolehbacaan kod; 4. Setiap pernyataan mesti berakhir dengan titik koma, dan ruang dan rehat garis tidak menjejaskan pelaksanaan tetapi mempengaruhi kebolehbacaan. Menguasai peraturan asas ini boleh membantu menulis kod PHP yang jelas dan stabil.

Langkah -langkah untuk memasang Php8 di Ubuntu adalah: 1. Kemas kini senarai pakej perisian; 2. Pasang Php8 dan komponen asas; 3. Semak versi untuk mengesahkan bahawa pemasangan berjaya; 4. Pasang modul tambahan seperti yang diperlukan. Pengguna Windows boleh memuat turun dan menyegarkan pakej zip, kemudian mengubah suai fail konfigurasi, membolehkan sambungan, dan menambah laluan ke pembolehubah persekitaran. Pengguna MACOS mengesyorkan menggunakan HomeBrew untuk memasang, dan melakukan langkah -langkah seperti menambah ketuk, memasang Php8, menetapkan versi lalai dan mengesahkan versi. Walaupun kaedah pemasangan berbeza di bawah sistem yang berbeza, prosesnya jelas, jadi anda boleh memilih kaedah yang tepat mengikut tujuannya.

Phpisasererver-sidescriptinglanguageusedforwebdevelopment, terutamanyafordynamicwebsitesandcmsplatformslikeworderpress.itrunsontheserver, processesdata, interaksiSwithdatabases, danSendshtmltobrowsers.commonusesinusludeusererorhentication, e-komisana

Bagaimana untuk mula menulis skrip PHP pertama anda? Pertama, sediakan persekitaran pembangunan tempatan, pasang XAMPP/MAMP/LAMP, dan gunakan editor teks untuk memahami prinsip berjalan pelayan. Kedua, buat fail yang dipanggil hello.php, masukkan kod asas dan jalankan ujian. Ketiga, belajar menggunakan PHP dan HTML untuk mencapai output kandungan dinamik. Akhirnya, perhatikan kesilapan biasa seperti titik titik koma, isu -isu rujukan, dan kesilapan sambungan fail, dan membolehkan laporan ralat untuk debugging.

TohandlefileoperationsInphp, useappropriatefunctionsandmodes.1.toreAdafile, usefile_get_contents () forsmallfilesorfgets () inaloop forline-by-lineprocessing.2.towritetoafile, useFile_put_contents () forsimpleWritesOrappendingWithTheFile_AppendFlag, orfwrite () w

Kunci untuk menulis pernyataan Ifelse Python adalah untuk memahami struktur dan butiran logik. 1. Infrastruktur adalah untuk melaksanakan sekeping kod jika syarat -syarat ditubuhkan, jika tidak, bahagian lain dilaksanakan, yang lain adalah pilihan; 2. Penghakiman pelbagai syarat dilaksanakan dengan ELIF, dan ia dilaksanakan secara berurutan dan dihentikan sebaik sahaja ia dipenuhi; 3. Bersarang jika digunakan untuk penghakiman subdivisi selanjutnya, adalah disyorkan untuk tidak melebihi dua lapisan; 4. Ekspresi ternary boleh digunakan untuk menggantikan Ifelse mudah dalam senario mudah. Hanya dengan memberi perhatian kepada lekukan, perintah bersyarat dan integriti logik, kita boleh menulis kod penghakiman yang jelas dan stabil.
