Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyelesaikan Ralat Tamat Masa SSL dan Crypto Enable dalam PHP untuk file_get_contents()?

Bagaimana untuk Menyelesaikan Ralat Tamat Masa SSL dan Crypto Enable dalam PHP untuk file_get_contents()?

Linda Hamilton
Linda Hamiltonasal
2024-10-23 11:52:30959semak imbas

How to Resolve SSL Timeout and Crypto Enabling Errors in PHP for file_get_contents()?

SSL Timeout dan Ralat Pembolehan Kripto Selesai untuk file_get_contents()

Dalam PHP, apabila menggunakan file_get_contents() untuk mendapatkan semula kandungan daripada halaman HTTPS, adalah mungkin untuk menghadapi ralat yang berkaitan dengan pendayaan kripto SSL. Satu ralat sedemikian ialah:

Warning: file_get_contents(): SSL: crypto enabling timeout...
Warning: file_get_contents(): Failed to enable crypto...

Isu ini timbul apabila konfigurasi PHP tidak mempunyai tetapan yang diperlukan untuk mendayakan kripto untuk sambungan SSL. Untuk membetulkannya, penyelesaian berikut dicadangkan:

Menggunakan cURL dengan SSLv3

Daripada file_get_contents(), perpustakaan cURL boleh digunakan, yang memberikan kawalan yang lebih besar terhadap Tetapan SSL. Dengan menetapkan pilihan CURLOPT_SSLVERSION kepada 3, SSLv3 akan didayakan, berpotensi menyelesaikan isu:

<code class="php"><?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>

Mengkonfigurasi cURL untuk Pengesahan SSL

Dalam kes tertentu, isu mungkin juga berpunca daripada sijil akar yang hilang atau tidak lengkap. Untuk memastikan pengesahan SSL yang betul, langkah berikut disyorkan:

  1. Muat turun sijil akar.
  2. Tentukan laluan ke fail sijil menggunakan CURLOPT_CAINFO:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");</code>
  1. Dayakan pengesahan SSL menggunakan CURLOPT_SSL_VERIFYPEER:
<code class="php">curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>

Dengan melaksanakan penyelesaian ini, anda boleh menyelesaikan tamat masa SSL dan ralat pendayaan crypto yang dikaitkan dengan file_get_contents() dalam PHP, membolehkan anda untuk mendapatkan semula kandungan daripada halaman HTTPS tanpa komplikasi lanjut.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Tamat Masa SSL dan Crypto Enable dalam PHP untuk file_get_contents()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn