Apabila menghadapi ralat "Gagal mendayakan kripto" semasa menggunakan file_get_contents() dengan OPENSSL, adalah penting untuk menyiasat isu asas.
Mengenalpasti Punca Punca
Log ralat yang disediakan mencadangkan tamat masa semasa pemulaan kripto. Walau bagaimanapun, masalahnya mungkin terletak di tempat lain. Satu sebab yang mungkin ialah tapak web menggunakan versi SSL yang tidak disokong, seperti SSLv3.
Penyelesaian Menggunakan cURL
Untuk memintas pengehadan file_get_contents() dan mendayakan sokongan SSLv3 , adalah disyorkan untuk menggunakan cURL sebaliknya:
<code class="php">function getSSLPage($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSLVERSION, 3); $result = curl_exec($ch); curl_close($ch); return $result; } var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));</code>
Penyelesaian ini secara eksplisit menetapkan versi SSL kepada v3, membenarkan curl mengendalikan jabat tangan SSL dengan jayanya.
Pertimbangan Tambahan untuk Pengguna Windows
Untuk pengguna Windows, mungkin juga perlu untuk menentukan lokasi sijil akar untuk curl. Ini boleh dicapai dengan:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
Dengan menetapkan pilihan CURLOPT_SSL_VERIFYPEER kepada benar, curl akan mengesahkan sijil rakan sebaya terhadap sijil akar yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Permulaan Kripto yang Gagal untuk file_get_contents() Menggunakan OpenSSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!