Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `file_get_contents()` Gagal Mengambil URL Luaran pada Pelayan Ini?

Mengapakah `file_get_contents()` Gagal Mengambil URL Luaran pada Pelayan Ini?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 14:57:11829semak imbas

Why is `file_get_contents()` Failing to Retrieve External URLs on This Server?

Isu File_get_contents dengan URL Luaran pada Pelayan Tertentu

Masalah:

Apabila menggunakan fungsi PHP file_get_contents() untuk mendapatkan semula kandungan URL luaran pada pelayan tertentu, hasil kosong dikembalikan. Walau bagaimanapun, fungsi ini berfungsi dengan betul apabila digunakan secara setempat atau apabila mengakses URL dalaman pada pelayan yang sama.

Punca Kemungkinan:

Isu ini berkemungkinan berkaitan dengan PHP.ini tetapan konfigurasi.

Penyelesaian:

Untuk menentukan PHP.ini yang mana konfigurasi menyebabkan masalah, ikut langkah berikut:

  1. Semak tetapan allow_url_fopen: Tetapan ini mengawal sama ada PHP boleh mengakses URL luaran melalui keluarga fungsi fopen. Jika ia ditetapkan kepada Mati, file_get_contents() tidak akan dapat mendapatkan semula kandungan daripada URL luaran.

    Semak fail PHP.ini untuk baris berikut:

    allow_url_fopen = Off

    Jika ia ditetapkan kepada Mati, tukar kepada Hidup.

  2. Semak allow_url_include tetapan: Tetapan ini mengawal sama ada PHP boleh memasukkan URL luaran dalam skrip. Jika ia ditetapkan kepada Mati, file_get_contents() mungkin tidak dapat mendapatkan semula kandungan daripada URL luaran.

    Semak fail PHP.ini untuk baris berikut:

    allow_url_include = Off

    Jika ia tetapkan kepada Mati, tukar kepada Hidup.

  3. Gunakan alternatif function: Jika tetapan di atas tidak menyelesaikan isu, anda boleh menggunakan fungsi alternatif untuk meniru gelagat file_get_contents(). Satu fungsi sedemikian ialah curl_init():

    function get_content($URL){
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_URL, $URL);
       $data = curl_exec($ch);
       curl_close($ch);
       return $data;
    }
    
    echo get_content('http://example.com');

Atas ialah kandungan terperinci Mengapakah `file_get_contents()` Gagal Mengambil URL Luaran pada Pelayan Ini?. 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