Saya punya beberapa kode PHP. Ketika saya menjalankannya, pesan peringatan muncul.
Bagaimana saya bisa menghapus / menekan / mengabaikan pesan peringatan ini?
php
warnings
error-reporting
Alireza
sumber
sumber
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:sumber
E_ALL ^ E_WARNING
, mengaktifkan semua pelaporan kesalahan selain peringatan, sepertinya merupakan pilihan argumen yang lebih baikerror_reporting
.Anda dapat menempatkan @ di depan pemanggilan fungsi Anda untuk menekan semua pesan kesalahan.
sumber
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.Untuk menekan peringatan sambil membiarkan semua pelaporan kesalahan lainnya diaktifkan:
sumber
Jika Anda tidak ingin menampilkan peringatan serta kesalahan gunakan
Pelaporan Kesalahan - Manual PHP
sumber
Jika Anda ingin menekan peringatan dan beberapa jenis kesalahan lainnya (misalnya, pemberitahuan) saat menampilkan semua kesalahan lain, Anda dapat melakukan:
sumber
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
sumber
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:
Peringatan masih dalam sumber halaman sebagai pengingat bagi saya, tetapi tidak terlihat oleh klien.
sumber
ob_start()
danob_end_clean()
sebagai gantinya. Dengan cara ini, barang-barang itu bahkan tidak dikirim ke browser (yang ada di sini).Saya melakukannya sebagai berikut di php.ini saya :
Log ini hanya kesalahan fatal dan tidak ada peringatan.
sumber
Saya pikir solusi yang lebih baik adalah konfigurasi .htaccess Dengan cara itu Anda tidak perlu mengubah kode aplikasi. Berikut adalah arahan untuk Apache2
sumber
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.
sumber
Sudah ada jawaban dengan Operator Kontrol Kesalahan tetapi tidak ada penjelasan. Anda dapat menggunakan
@
operator dengan setiap ekspresi dan menyembunyikan kesalahan (kecuali Kesalahan Fatal).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.
atau dari pengaturan PHP INI
2. Menangkap pengecualian
sumber
Untuk mengabaikan semua peringatan, gunakan contoh ini, di atas kode Anda:
sumber