Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `file_get_contents` Gagal Mengambil URL Luaran dalam PHP dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `file_get_contents` Gagal Mengambil URL Luaran dalam PHP dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-12-09 00:52:10213semak imbas

Why Does `file_get_contents` Fail to Fetch External URLs in PHP, and How Can I Fix It?

Halangan URL Luaran dalam file_get_contents PHP: Menyelidiki php.ini

Dalam bidang PHP, fungsi file_get_contents menawarkan cara yang mudah untuk mendapatkan semula kandungan fail atau sumber jauh. Walau bagaimanapun, konfigurasi tertentu dalam fail php.ini boleh menghalang kefungsiannya apabila mengakses URL luaran.

Seperti yang dibuktikan dalam dilema pengguna, file_get_contents('http://example.com') boleh menghasilkan hasil yang berbeza bergantung pada persekitaran pelayan. Walaupun ia beroperasi seperti yang dimaksudkan dalam beberapa tetapan, ia menghasilkan hasil kosong pada pelayan tertentu, walaupun berfungsi secara setempat apabila mengakses fail dalaman.

Kuncinya terletak pada mengenal pasti konfigurasi php.ini khusus yang bertanggungjawab untuk percanggahan ini. Salah satu punca yang berpotensi ialah arahan allow_url_fopen, yang mengawal keupayaan skrip PHP untuk membuka URL luaran. Jika arahan ini ditetapkan kepada 0, mengakses URL luaran melalui fungsi PHP seperti file_get_contents akan dilarang.

Selain itu, pengalaman pengguna menyerlahkan perbezaan antara mengakses fail tempatan dan luaran. Arahan allow_url_fopen tidak menjejaskan interaksi PHP dengan fail tempatan. Namun, apabila ia berkaitan dengan sumber jauh, gelagat fungsi bergantung pada kehadiran atau ketiadaan nilai arahan 1.

Untuk mengelak kemungkinan sekatan jalan yang ditimbulkan oleh php.ini, pendekatan alternatif boleh diguna pakai. Satu pilihan yang berdaya maju ialah menggunakan fungsi seperti yang disediakan dalam jawapan:

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;
}

Fungsi ini meniru gelagat file_get_contents tetapi memanfaatkan keupayaan cURL untuk berinteraksi dengan URL luaran. Dengan menggunakan cURL, anda memperoleh fleksibiliti untuk mengakses sumber jauh walaupun konfigurasi php.ini mengehadkan penggunaan allow_url_fopen.

Atas ialah kandungan terperinci Mengapakah `file_get_contents` Gagal Mengambil URL Luaran dalam PHP dan Bagaimana Saya Boleh Membetulkannya?. 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