Jawaban:
Anda benar-benar harus memperbaiki apa pun yang menyebabkan peringatan, tetapi Anda dapat mengontrol visibilitas kesalahan error_reporting()
. Untuk melewati pesan peringatan, Anda dapat menggunakan sesuatu seperti:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, mengaktifkan semua pelaporan kesalahan selain peringatan, sepertinya merupakan pilihan argumen yang lebih baik error_reporting
.
Anda dapat menempatkan @ di depan pemanggilan fungsi Anda untuk menekan semua pesan kesalahan.
@yourFunctionHere();
dns_get_record
akan memberikan peringatan. Kode Anda dapat mengkompensasi peringatan tetapi masih melemparkannya. Mematikan pelaporan kesalahan berfungsi pada server produksi, tetapi tidak pada server devel. Jika Anda menghasilkan konten XML, peringatan itu akan menyebabkan browser tidak merender karena server mengirimkan XML yang cacat karena peringatan tersebut. Terkadang Anda menginginkannya pada devel, tetapi tidak untuk sesuatu yang disebabkan oleh kegagalan pencarian DNS sementara yang sudah Anda ganti rugi.
Jika Anda tidak ingin menampilkan peringatan serta kesalahan gunakan
// Turn off all error reporting
error_reporting(0);
di Core Php untuk menyembunyikan set pesan peringatan error_reporting (0) di atas file include atau file individual.
Di Wordpress hide Warnings and Notices tambahkan kode berikut dalam file wp-config.php
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Tidak persis menjawab pertanyaan, tetapi saya pikir ini adalah kompromi yang lebih baik dalam beberapa situasi:
Saya memiliki pesan peringatan sebagai hasil dari pernyataan printf () di perpustakaan pihak ketiga. Saya tahu persis apa penyebabnya - penyelesaian sementara sementara pihak ketiga memperbaiki kode mereka. Saya setuju bahwa peringatan tidak boleh ditekan, tetapi saya tidak bisa menunjukkan pekerjaan saya kepada klien dengan pesan peringatan muncul di layar. Solusi saya:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
Peringatan masih dalam sumber halaman sebagai pengingat bagi saya, tetapi tidak terlihat oleh klien.
ob_start()
dan ob_end_clean()
sebagai gantinya. Dengan cara ini, barang-barang itu bahkan tidak dikirim ke browser (yang ada di sini).
Saya pikir solusi yang lebih baik adalah konfigurasi .htaccess Dengan cara itu Anda tidak perlu mengubah kode aplikasi. Berikut adalah arahan untuk Apache2
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
Anda bisa menekan peringatan menggunakan error_reporting tetapi cara yang jauh lebih baik adalah dengan memperbaiki skrip Anda di tempat pertama.
Jika Anda tidak tahu caranya, edit pertanyaan Anda dan tunjukkan kami baris yang dipermasalahkan dan peringatan yang ditampilkan.
Sudah ada jawaban dengan Operator Kontrol Kesalahan tetapi tidak ada penjelasan. Anda dapat menggunakan @
operator dengan setiap ekspresi dan menyembunyikan kesalahan (kecuali Kesalahan Fatal).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
Untuk debugging, metode ini cepat dan sempurna. Tetapi Anda tidak boleh menggunakannya pada produksi atau permanen termasuk dalam versi lokal Anda. Ini akan memberi Anda banyak iritasi yang tidak perlu.
Anda sebaiknya mempertimbangkan:
1. Kesalahan pengaturan pelaporan sebagaimana disebutkan dalam jawaban yang diterima.
error_reporting(E_ERROR | E_PARSE);
atau dari pengaturan PHP INI
ini_set('display_errors','Off');
2. Menangkap pengecualian
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}