Saya menulis kode PHP seperti ini
$site="http://www.google.com";
$content = file_get_content($site);
echo $content;
Tetapi ketika saya menghapus "http: //" dari $site
saya mendapatkan peringatan berikut:
Peringatan: file_get_contents (www.google.com) [function.file-get-content]: gagal membuka streaming:
Saya mencoba try
dan catch
tetapi tidak berhasil.
php
function
exception-handling
warnings
Waseem
sumber
sumber
Jawaban:
Langkah 1: periksa kode pengembalian:
if($content === FALSE) { // handle error here... }
Langkah 2: tekan peringatan dengan meletakkan operator kontrol kesalahan (mis.
@
) Di depan panggilan ke file_get_contents () :$content = @file_get_contents($site);
sumber
@
dapat berdampak negatif pada kinerja. Lihat jawaban ini pada posting terkait yang menjelaskan dengan cukup baik.Anda juga dapat mengatur penangan kesalahan Anda sebagai fungsi anonim yang memanggil Pengecualian dan menggunakan coba / menangkap pengecualian itu.
Sepertinya banyak kode untuk menangkap satu kesalahan kecil, tetapi jika Anda menggunakan pengecualian di seluruh aplikasi Anda, Anda hanya perlu melakukan ini sekali, jauh di atas (dalam file konfigurasi yang disertakan, misalnya), dan itu akan ubah semua kesalahan Anda menjadi Pengecualian di seluruh.
sumber
Cara favorit saya untuk melakukan ini cukup sederhana:
Saya menemukan ini setelah bereksperimen dengan
try/catch
dari @enobrev di atas, tetapi ini memungkinkan untuk kode yang kurang panjang (dan IMO, lebih mudah dibaca). Kami hanya menggunakanerror_get_last
untuk mendapatkan teks dari kesalahan terakhir, danfile_get_contents
mengembalikan false pada kegagalan, sehingga "jika" sederhana dapat menangkap itu.sumber
@file_get_contents
untuk menekan pelaporan kesalahan ke browser.@file_get_contents
untuk menekan peringatan dan menguji nilai hasil menggunakan=== FALSE
.if (false !== ($data = file_get_contents ()))
error_get_last
tidak ada hasil dalam pengalaman sayaAnda dapat menambahkan sebuah @:
$content = @file_get_contents($site);
Ini akan menekan peringatan apa pun - gunakan dengan hemat! . Lihat Operator Kontrol Kesalahan
Sunting: Ketika Anda menghapus 'http: //' Anda tidak lagi mencari halaman web, tetapi file di disk Anda disebut "www.google ....."
sumber
Salah satu alternatif adalah untuk menekan kesalahan dan juga melemparkan pengecualian yang bisa Anda tangkap nanti. Ini sangat berguna jika ada beberapa panggilan ke file_get_contents () dalam kode Anda, karena Anda tidak perlu menekan dan menangani semuanya secara manual. Sebagai gantinya, beberapa panggilan dapat dilakukan untuk fungsi ini dalam satu blok coba / tangkap.
sumber
Begini cara saya melakukannya ... Tidak perlu blok coba-tangkap ... Solusi terbaik selalu yang paling sederhana ... Selamat menikmati!
sumber
$http_response_header
tidak diperbarui dalam kasus itu, karena tidak ada respons HTTP yang diterima.sumber
$url
404 tidak ditemukan, peringatan akan tetap muncul.ignore_errors
hanya menginstruksikan konteks HTTP untuk tidak menafsirkan kode status respons HTTP > = 400 sebagai kesalahan. Sementara sedikit terkait, itu tidak menjawab pertanyaan penanganan kesalahan PHP.ignore_errors
opsi! Inilah yang saya butuhkan!Inilah cara saya mengatasinya:
sumber
Hal terbaik adalah mengatur kesalahan Anda sendiri dan penangan pengecualian yang akan melakukan sesuatu yang berguna seperti mencatatnya dalam file atau mengirim email yang kritis. http://www.php.net/set_error_handler
sumber
Anda dapat menggunakan skrip ini
sumber
if ($url === true)...
karena jika Anda mendapatkan sebagai respons0
atau kosong, itu menimbulkan kesalahan koneksi.Karena PHP 4 gunakan error_reporting () :
sumber
Cara termudah untuk melakukan ini adalah hanya menambahkan @ sebelum file_get_contents, i. e .:
sumber
sesuatu seperti ini:
sumber
sumber
Anda harus menggunakan fungsi file_exists () sebelum menggunakan file_get_contents (). Dengan cara ini Anda akan menghindari peringatan php.
sumber
Ubah file php.ini
sumber
Ini akan mencoba untuk mendapatkan data, jika tidak berhasil, itu akan menangkap kesalahan dan memungkinkan Anda untuk melakukan apa pun yang Anda butuhkan dalam tangkapan.
sumber
sumber
Anda juga harus mengatur
di Anda
php.ini
untuk berhenti menerima peringatan.sumber