Menyelesaikan masalah file_get_contents() Ralat Pengesahan Sijil SSL
Apabila cuba mengakses perkhidmatan REST menggunakan file_get_contents() dalam PHP 5.6, anda mungkin menghadapi ralat "Operasi SSL gagal dengan kod 1" disebabkan oleh sijil yang lebih ketat pengesahan.
Perihalan Isu
Halaman PHP pengguna cuba mengambil data dari titik akhir HTTPS menggunakan file_get_contents(). Walau bagaimanapun, ia gagal dengan ralat berikut:
Root Sebab
PHP 5.6 memperkenalkan pengesahan SSL yang lebih ketat secara lalai, memerlukan pengesahan sijil yang tepat. Ralat menunjukkan bahawa pelanggan tidak boleh mengesahkan sijil pelayan jauh.
Resolusi
Untuk menyelesaikan isu ini, dokumen PHP rasmi pada OpenSSL berubah dalam 5.6 mengesyorkan supaya pengesahan sijil dilumpuhkan. Nota: penyelesaian ini mempunyai implikasi keselamatan yang ketara dan hanya perlu dipertimbangkan dalam persekitaran terkawal di mana kepercayaan antara pelanggan dan pelayan diwujudkan.
$arrContextOptions = array( "ssl" => array( "verify_peer" => false, "verify_peer_name" => false, ), ); $response = file_get_contents("remote_url", false, stream_context_create($arrContextOptions));
Nota Penting
Melumpuhkan pengesahan sijil SSL mengurangkan keselamatan dan boleh mendedahkan aplikasi anda kepada mencuri dengar dan pelanggaran keselamatan yang lain. Adalah amat disyorkan untuk mengkonfigurasi sistem anda dengan betul untuk menggunakan sijil SSL yang dipercayai dan bukannya menggunakan penyelesaian ini.
Atas ialah kandungan terperinci Bagaimana untuk Betulkan 'Operasi SSL gagal dengan kod 1' Ralat dalam `file_get_contents()` PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!