Gagal Mendayakan Kripto Apabila Menggunakan file_get_contents() dengan URL HTTPS Tertentu
Apabila cuba mendapatkan semula kandungan daripada URL HTTPS tertentu, seperti https ://eresearch.fidelity.com/, menggunakan file_get_contents(), anda mungkin menghadapi ralat berikut:
Warning: file_get_contents(): SSL: crypto enabling timeout Warning: file_get_contents(): Failed to enable crypto Warning: file_get_contents(): failed to open stream: operation failed Fatal error: Maximum execution time of 30 seconds exceeded
Penyelesaian:
Isu timbul daripada sasaran tapak web menggunakan protokol SSLv3, yang mungkin tidak disokong oleh persediaan PHP anda.
Pilihan 1: Tentukan Versi SSL Menggunakan cURL
Buat fungsi menggunakan cURL:
<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); // Specify SSL version 3 $result = curl_exec($ch); curl_close($ch); return $result; }</code>
Contoh penggunaan:
<code class="php">var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));</code>
Pilihan 2: Sertakan Sijil Root dalam Windows (Pilihan)
Dalam Windows, anda mungkin menghadapi kekurangan akses kepada sijil akar. Untuk menyelesaikan masalah ini, ikuti langkah berikut:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // True: verify certificates</code>
Atas ialah kandungan terperinci Bagaimana untuk Mendayakan Kripto Apabila Menggunakan file_get_contents() dengan URL HTTPS Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!