Cara menangani PHP tidak dapat memperoleh data selepas sijil SSL dipasang pada IIS
Dalam beberapa tahun kebelakangan ini, dengan peningkatan kesedaran tentang keselamatan rangkaian, pemasangan sijil SSL menjadi semakin penting. Dalam persekitaran Windows, banyak laman web menggunakan IIS sebagai pelayan web, dan PHP juga digunakan secara meluas sebagai bahasa skrip sebelah pelayan. Walau bagaimanapun, selepas memasang sijil SSL, kadangkala akan timbul masalah bahawa PHP tidak dapat memperoleh data, yang boleh menyebabkan keabnormalan perkhidmatan laman web. Artikel ini menyediakan penyelesaian kepada masalah ini dan menyediakan contoh kod terperinci.
Analisis Masalah:
Dalam persekitaran Windows, terutamanya selepas memasang sijil SSL pada pelayan IIS, PHP mungkin menghadapi masalah apabila meminta sumber HTTPS luaran. Ini kerana PHP tidak menyokong protokol SSL/TLS secara lalai, mengakibatkan ketidakupayaan untuk mengesahkan sijil SSL dengan betul. Dalam kes ini, mesej ralat seperti "ralat cURL 60: Masalah sijil SSL: tidak dapat mendapatkan sijil pengeluar tempatan" biasanya muncul.
Penyelesaian:
Untuk menyelesaikan masalah PHP tidak dapat memperoleh data selepas memasang sijil SSL pada IIS, kami boleh mengendalikannya melalui langkah-langkah berikut:
Pertama, kita perlu muat turun akar sijil SSL Fail sijil boleh dimuat turun dari tapak web rasmi pihak berkuasa sijil SSL dan disimpan ke direktori yang ditentukan pada pelayan.
Seterusnya, kita perlu mengkonfigurasi fail php.ini PHP, dayakan sambungan SSL dan tetapkan laluan fail sijil akar. Buka fail php.ini, cari dua baris konfigurasi berikut, dan pastikan konfigurasi adalah betul:
extension=php_openssl.dll curl.cainfo = "C:/path/to/your/cacert.pem"
Antaranya, "C:/path/to/your/cacert.pem" ialah laluan ke root fail sijil.
Dalam PHP, perpustakaan cURL biasanya digunakan untuk permintaan HTTP, termasuk permintaan HTTPS. Dengan mengubah suai konfigurasi cURL, kami boleh menjadikannya mengesahkan sijil SSL dengan betul apabila meminta sumber HTTPS. Berikut ialah kod contoh mudah:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://example.com/api'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_CAINFO, 'C:/path/to/your/cacert.pem'); $result = curl_exec($ch); curl_close($ch); echo $result;
Dalam kod ini, kami mengesahkan sijil SSL dengan menetapkan CURLOPT_SSL_VERIFYPEER, CURLOPT_CAINFO menentukan laluan ke fail sijil akar.
Akhir sekali, kami boleh menguji sama ada kod yang diubah suai berjaya memperoleh sumber HTTPS. Ini boleh disahkan dengan melawati URL HTTPS dan mendapatkan data.
Ringkasan:
Melalui langkah di atas, kita boleh menyelesaikan masalah bahawa PHP tidak dapat memperoleh data selepas memasang sijil SSL pada IIS. Dengan mengkonfigurasi fail php.ini dan menggunakan perpustakaan cURL, kami boleh mendayakan PHP untuk mengesahkan sijil SSL dengan betul dan berjaya meminta sumber HTTPS. Dalam aplikasi sebenar, sila laraskan kod secara fleksibel mengikut situasi tertentu dan pastikan kesahihan sijil SSL.
Saya harap artikel ini dapat membantu pembaca menyelesaikan masalah yang sama dan memastikan keselamatan dan operasi normal laman web.
Atas ialah kandungan terperinci Cara menangani PHP yang tidak dapat memperoleh data selepas sijil SSL dipasang pada IIS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!