Saya perlu mengatur skrip PHP saya di bagian atas untuk menonaktifkan pelaporan kesalahan untuk standar yang ketat.
Adakah yang bisa membantu?
Saya perlu mengatur skrip PHP saya di bagian atas untuk menonaktifkan pelaporan kesalahan untuk standar yang ketat.
Adakah yang bisa membantu?
Jawaban:
Apakah Anda ingin menonaktifkan pelaporan kesalahan, atau hanya mencegah pengguna melihatnya? Biasanya ide yang baik untuk mencatat kesalahan, bahkan di situs produksi.
# in your PHP code:
ini_set('display_errors', '0'); # don't show any errors...
error_reporting(E_ALL | E_STRICT); # ...but do log them
Mereka akan login ke log sistem standar Anda, atau gunakan error_log
arahan untuk menentukan dengan tepat di mana Anda ingin kesalahan.
php.ini
file Anda , misalnya jika Anda tidak dapat mengubah kode PHP.
php.ini
atau .htaccess
di suatu tempat dalam kode PHP saya.
Tanpa kesalahan.
error_reporting(0);
atau untuk tidak ketat
error_reporting(E_ALL ^ E_STRICT);
dan jika Anda ingin menampilkan semua kesalahan lagi, gunakan
error_reporting(-1);
^
ini hanya baik untuk menghilangkan satu jenis kesalahan. Jika Anda ingin mematikan tipe tambahan, Anda harus menggunakan E_ALL & ~E_DEPRECATED & ~E_STRICT
format. Atau mungkin (E_ALL & ~(E_DEPRECATED | E_STRICT))
formatnya.
ini_set('error_reporting', E_ALL&~E_STRICT);
Menekan pelaporan kesalahan STRICT di PHP> = 5.4ini_set('error_reporting', E_ALL^E_STRICT);
^
("xor") daripada & ~
("dan tidak") adalah ide yang buruk ! ^
tergantung pada asumsi bahwa misalnya E_STRICT adalah bagian dari E_ALL dan akan selalu menjadi bagian darinya. Ini buruk karena E_ALL memang berubah di masa lalu (E_STRICT tidak lewat itu, tetapi sekarang sejak PHP 5.4). Jika asumsi gagal satu hari, ^
tidak hanya akan pecah, tetapi sebenarnya melakukan kebalikan dari apa yang seharusnya dilakukan: Ini akan mengaktifkan E_STRICT karena cara kerja XOR ( ^
). & ~
namun akan selalu menonaktifkan E_STRICT, tidak peduli nilai E_ALL saat ini. Karena itu & ~
harus digunakan.
Semua solusi di atas benar. Tetapi, ketika kita berbicara tentang aplikasi PHP normal, mereka harus dimasukkan dalam setiap halaman, yang diperlukan. Cara untuk mengatasi ini, adalah melalui .htaccess
di folder root. Hanya untuk menyembunyikan kesalahan. [Masukkan salah satu baris berikut dalam file]
php_flag display_errors off
Atau
php_value display_errors 0
Selanjutnya, untuk mengatur pelaporan kesalahan
php_value error_reporting 30719
Jika Anda bertanya-tanya bagaimana nilainya 30719
, E_ALL (32767), E_STRICT (2048) sebenarnya konstan yang memiliki nilai numerik dan ( 32767 - 2048 = 30719
)
php_admin_value error_reporting
ini untuk bekerja (dalam konfigurasi vhost).
Nilai default flag error_reporting adalah E_ALL & ~ E_NOTICE jika tidak disetel dalam php.ini. Tetapi dalam beberapa instalasi (terutama instalasi yang menargetkan lingkungan pengembangan) memiliki E_ALL | E_STRICT ditetapkan sebagai nilai flag ini (ini adalah nilai yang disarankan selama pengembangan ). Dalam beberapa kasus, khususnya ketika Anda ingin menjalankan beberapa proyek open source, yang dikembangkan sebelum era PHP 5.3 dan belum diperbarui dengan praktik terbaik yang didefinisikan oleh PHP 5.3, di lingkungan pengembangan Anda, Anda mungkin akan mengalami mendapatkan beberapa pesan seperti yang Anda dapatkan. Cara terbaik untuk mengatasi situasi ini, adalah dengan menetapkan hanya E_ALL sebagai nilai flag error_reporting , baik diphp.ini atau dalam kode (mungkin di front-controller seperti index.php di web-root sebagai berikut:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
WordPress
Jika Anda bekerja di lingkungan wordpress, Wordpress menetapkan tingkat kesalahan dalam file wp-include / load.php dalam fungsi wp_debug_mode()
. Jadi, Anda harus mengubah level SETELAH fungsi ini dipanggil (dalam file tidak dicentang ke git sehingga hanya pengembangan), atau memodifikasi langsung error_reporting()
panggilan
Saya tidak melihat jawaban yang bersih dan cocok untuk perangkat lunak yang siap produksi, jadi begini:
/*
* Get current error_reporting value,
* so that we don't lose preferences set in php.ini and .htaccess
* and accidently reenable message types disabled in those.
*
* If you want to disable e.g. E_STRICT on a global level,
* use php.ini (or .htaccess for folder-level)
*/
$old_error_reporting = error_reporting();
/*
* Disable E_STRICT on top of current error_reporting.
*
* Note: do NOT use ^ for disabling error message types,
* as ^ will re-ENABLE the message type if it happens to be disabled already!
*/
error_reporting($old_error_reporting & ~E_STRICT);
// code that should not emit E_STRICT messages goes here
/*
* Optional, depending on if/what code comes after.
* Restore old settings.
*/
error_reporting($old_error_reporting);
E_ALL & ~E_DEPRECATED & ~E_STRICT
untuk produksi. Perhatikan bahwa mereka menyarankan Anda menonaktifkan standar ketat.