Notice: Constant DIR_FS_CATALOG already defined
Aku sudah komentar display_errors
di php.ini
, tapi tidak bekerja.
Bagaimana cara membuat PHP tidak menampilkan hal-hal seperti itu ke browser?
MEMPERBARUI
Saya taruh di display_errors = Off
sana tetapi masih melaporkan pemberitahuan seperti itu,
Apakah ini masalah dengan PHP 5.3?
Melaporkan banyak Call Stack juga ..
php
error-handling
constants
pengguna198729
sumber
sumber
grep display_errors /path/to/php.ini
untuk berlari untuk melihat apakah baris Anda diganti di suatu tempat di bawah file. Inilah yang terjadi pada saya.ini_set('display_errors',0)
di file php Anda. Ketika Anda ini-pengaturan tidak berfungsi, Anda harus memeriksa apakahphpinfo()
menunjukkan nilai yang Anda inginkan. Jika tidak, Anda juga mengubah ini-file yang salah atau sesuatu menimpa nilai Anda dari php.iniJawaban:
Anda dapat mengatur
display_errors
ke0
atau menggunakanerror_reporting()
fungsi tersebut.Namun, pemberitahuan mengganggu (saya bisa bersimpati sebagian ) tetapi memiliki tujuan. Anda tidak boleh mendefinisikan konstanta dua kali, kedua kalinya tidak akan berfungsi dan konstanta tidak akan berubah!
sumber
display_errors
tidak berfungsi seperti yang diharapkan.phpinfo()
untuk melihat apakah pengaturan benar-benar berlaku. Maafkan saya, tetapi saya sangat meragukan bahwa Anda telah menemukan bug di PHP 5.3 - Saya hanya akan percaya jika saya melihatnya :)local value
, tetapimaster value
mati, tidak tahu persis apa artinya ...ini_set
arahan atauphp_ini_flag
pengaturan dalam.htaccess
file.Dari dokumentasi PHP ( error_reporting ):
Opsi menarik lainnya untuk fungsi itu:
sumber
Untuk baris perintah php, set
di
/etc/php5/cli/php.ini
php
eksekusi perintah kemudian mengabaikan pemberitahuan.sumber
sumber http://php.net/manual/en/function.error-reporting.php
sumber
Gunakan Baris Ini Dalam Kode Anda
Saya pikir ini sangat membantu Anda.
sumber
Anda mencari:
sumber
/usr/bin/php -d error_reporting="E_ERROR | E_WARNING | E_PARSE" -f /path/to/file.php
untuk crontab sayaSaya lebih suka tidak mengatur di
error_reporting
dalam kode saya. Tetapi dalam satu kasus, produk lama, ada begitu banyak pemberitahuan, sehingga harus disembunyikan.Jadi saya menggunakan potongan berikut untuk mengatur nilai yang dikonfigurasi di sisi server
error_reporting
tetapi kurangiE_NOTICE
s.Sekarang pengaturan pelaporan kesalahan selanjutnya dapat dikonfigurasi di
php.ini
atau.htaccess
. Hanya pemberitahuan yang akan selalu dinonaktifkan.sumber
Anda dapat mengatur
ini_set('display_errors',0);
dalam skrip Anda atau menentukan kesalahan mana yang ingin Anda tampilkanerror_reporting()
.sumber
ini_set
metode yang disebutkan di sini,error_reporting(0)
metode yang disebutkan di tempat lain tidak berpengaruh apa pun.dengan tidak menyebabkan kesalahan:
Jika Anda benar-benar harus melakukannya, ubah pelaporan kesalahan menggunakan error_reporting () ke E_ALL ^ E_NOTICE.
sumber
Untuk kode PHP:
Untuk
php.ini
konfigurasi:sumber
Saya menemukan trik ini baru-baru ini. Pukul @ di awal baris yang dapat menghasilkan peringatan / kesalahan.
Seolah-olah disihir, mereka menghilang.
sumber
Gunakan phpinfo () dan cari untuk
Configuration File (php.ini) Path
melihat path file config mana untuk php yang digunakan. PHP dapat memiliki banyak file konfigurasi tergantung pada lingkungan yang dijalankannya. Biasanya, untuk konsol itu:/etc/php5/cli/php.ini
dan untuk php dijalankan oleh apache:
/etc/php5/apache2/php.ini
Dan kemudian tentukan
error_reporting
cara Anda membutuhkannya:http://www.phpknowhow.com/configuration/php-ini-error-settings/ http://www.zootemplate.com/news-updates/how-to-disable-notice-and-warning-in-phpini- mengajukan
sumber
Seperti yang disebutkan oleh beberapa orang dan jika Anda adalah pembuat kode, Anda harus memperbaiki semua kesalahan, pemberitahuan, dll. Karena ini akan menyebabkan lebih banyak masalah bagi Anda dalam jangka panjang daripada tidak memperbaikinya (terutama saat Anda meningkatkan OS Anda). Untuk server Anda, seharusnya error hanya ditampilkan di log Anda, bukan di layar klien.
Jadi untuk menghindari kesalahan di browser Anda, Anda menggunakan
display_errors
bendera seperti yang sudah Anda temukan:Sekarang masalah sebenarnya adalah ketika Anda menjalankan kode orang lain. Jika demikian, memodifikasi kode kemungkinan akan ditimpa setiap kali Anda meningkatkan kode itu. Menjaga kode itu jadi membosankan.
Dalam kasus saya, saya menjalankan PHP dengan
crontab
memilikiwp-cron.php
script yang menjalankan sesekali. Saya mendapatkan kesalahan yang dikirim ke email saya, yang menjadi membosankan ketika Anda mendapatkan satu email setiap 10 menit! Dalam hal ini, sistem Wordpress memiliki file konfigurasi yang menyertakan aWP_DEBUG
dan mereka memanggilerror_reporting()
fungsi tersebut sehingga mencoba mengubaherror_reporting
variabel pada baris perintah tidak akan berhasil. Sebagai gantinya Anda harus mengeditwp-config.php
file di folder root dan memastikan bahwaWP_DEBUG
disetel kefalse
. Jika tidak, Anda akan mendapatkan semua peringatan dan pemberitahuan itu sepanjang waktu.sumber
Anda dapat memeriksa apakah konstanta sudah ditentukan menggunakan:
sumber
Saya yakin mengomentari display_errors di php.ini tidak akan berfungsi karena defaultnya adalah On. Anda harus menyetelnya ke 'Off' sebagai gantinya.
Jangan lupa restart Apache untuk menerapkan perubahan konfigurasi.
Perhatikan juga bahwa meskipun Anda dapat menyetel display_errors saat runtime, mengubahnya di sini tidak memengaruhi kesalahan FATAL.
Seperti dicatat oleh orang lain, idealnya selama pengembangan Anda harus menjalankan error_reporting pada tingkat setinggi mungkin dan display_errors diaktifkan. Meskipun menjengkelkan ketika Anda pertama kali memulai, kesalahan, peringatan, pemberitahuan, dan saran pengkodean yang ketat ini bertambah dan memungkinkan Anda menjadi pembuat kode yang lebih baik.
sumber
Konstanta yang ditentukan ganda
Untuk memperbaiki kesalahan tertentu di sini Anda dapat memeriksa apakah konstanta sudah ditentukan sebelum menentukannya:
Saya pribadi mulai dengan pencarian di basis kode untuk konstanta
DIR_FS_CATALOG
, lalu mengganti definisi ganda dengan ini.Menyembunyikan pemberitahuan PHP sebaris, kasus per kasus
PHP menyediakan
@
operator kontrol kesalahan, yang dapat Anda gunakan untuk mengabaikan fungsi tertentu yang menyebabkan pemberitahuan atau peringatan.Dengan menggunakan ini, Anda dapat mengabaikan / menonaktifkan pemberitahuan dan peringatan kasus per kasus dalam kode Anda, yang dapat berguna untuk situasi di mana kesalahan atau pemberitahuan disengaja, direncanakan, atau benar-benar mengganggu dan tidak mungkin diselesaikan di sumbernya. . Tempatkan
@
sebelum fungsi atau var yang menyebabkan pemberitahuan dan itu akan diabaikan.Berikut contohnya:
Lebih lanjut tentang ini dapat ditemukan di dokumen Operator Kontrol Kesalahan PHP .
sumber