Rumah > pembangunan bahagian belakang > masalah PHP > Apakah tahap ralat dalam PHP?

Apakah tahap ralat dalam PHP?

青灯夜游
Lepaskan: 2023-03-17 20:46:01
asal
4666 orang telah melayarinya

Tahap ralat php ialah: 1. E_ERROR ralat masa jalanan, biasanya tidak dapat dipulihkan; 2. Amaran masa jalan E_WARNING (ralat bukan fatal); yang berlaku semasa proses permulaan permulaan; 5. E_CORE_WARNING ialah amaran (ralat tidak membawa maut) yang berlaku semasa proses permulaan permulaan;

Apakah tahap ralat dalam PHP?

Persekitaran pengendalian tutorial ini: sistem windows7, versi PHP8, komputer DELL G3

Dalam pembangunan program kami, kami sering menghadapi beberapa Untuk program menjalankan ralat, PHP akan memberikan gesaan yang berbeza mengikut tahap ralat program. Contohnya, amaran, ralat, dsb., tetapi ralat ini boleh ditetapkan. Jika ralat ini hanyalah ralat kecil, kita boleh menghalang ralat ini daripada dilaporkan.

Tahap ralat dalam php ialah:

1 E_ERROR (integer) maut ralat masa jalan. Ralat jenis ini secara amnya merupakan situasi yang tidak boleh dipulihkan, seperti masalah yang disebabkan oleh peruntukan memori. Akibatnya ialah skrip ditamatkan dan tidak terus berjalan.
2 E_WARNING (integer) Amaran masa jalan (ralat tidak membawa maut). Hanya mesej segera diberikan, tetapi skrip tidak ditamatkan.
4 E_PARSE (integer) Ralat penghuraian sintaks masa kompilasi. Ralat penghuraian dijana hanya oleh penghurai.
8 E_NOTICE (integer) Pemberitahuan masa jalan. Menunjukkan bahawa skrip menghadapi situasi yang mungkin muncul sebagai ralat, tetapi mungkin juga terdapat pemberitahuan serupa dalam skrip yang boleh berjalan seperti biasa.
16 E_CORE_ERROR(integer) Berlaku semasa permulaan PHP ralat maut . Ralat ini serupa dengan E_ERROR, tetapi dijana oleh teras enjin PHP. sejak PHP 4
32 E_CORE_WARNING(integer) Amaran (ralat tidak membawa maut) berlaku semasa permulaan permulaan PHP. Serupa dengan E_WARNING, tetapi dijana oleh teras enjin PHP. sejak PHP 4
64 E_COMPILE_ERROR(integer) Ralat masa penyusunan maut. Serupa dengan E_ERROR, tetapi dijana oleh enjin skrip Zend. sejak PHP 4
128 E_COMPILE_WARNING(integer) Amaran masa kompilasi (ralat tidak membawa maut). Serupa dengan E_WARNING, tetapi dijana oleh enjin skrip Zend. sejak PHP 4
256 E_USER_ERROR(integer) Mesej ralat yang dijana pengguna. Sama seperti E_ERROR, tetapi ia dijana oleh pengguna menggunakan fungsi PHP trigger_error() dalam kod. sejak PHP 4
512 E_USER_WARNING(integer) Mesej amaran yang dijana pengguna. Sama seperti E_WARNING, tetapi ia dijana oleh pengguna menggunakan fungsi PHP trigger_error() dalam kod. sejak PHP 4
1024 E_USER_NOTICE(integer) Mesej pemberitahuan yang dijana oleh pengguna. Sama seperti E_NOTICE, tetapi ia dijana oleh pengguna menggunakan fungsi PHP trigger_error() dalam kod. sejak PHP 4
2048 E_STRICT (integer) Dayakan cadangan PHP untuk pengubahsuaian kod untuk memastikan kesalingoperasian terbaik dan keserasian hadapan kod. sejak PHP 5
4096 E_RECOVERABLE_ERROR(integer) Kesilapan maut yang boleh ditangkap. Ia menunjukkan bahawa ralat yang berpotensi berbahaya telah berlaku, tetapi tidak menyebabkan enjin PHP menjadi tidak stabil. Jika ralat tidak ditangkap oleh pengendali yang ditentukan pengguna, ia akan menjadi E_ERROR dan skrip akan ditamatkan. sejak PHP 5.2.0
8192 E_DEPRECATED(integer ) Pemberitahuan masa jalan. Apabila didayakan, amaran akan diberikan tentang kod yang mungkin tidak berfungsi dengan betul dalam versi akan datang. sejak PHP 5.3.0
16384 E_USER_DEPRECATED(integer) Mesej amaran untuk output pengguna yang rendah. Sama seperti E_DEPRECATED, tetapi ia dijana oleh pengguna menggunakan fungsi PHP trigger_error() dalam kod. sejak PHP 5.3.0
30719 E_ALL (integer ) E_STRICTSemua ralat dan mesej amaran apabila keluar. 30719 dalam PHP 5.3.x, 6143 dalam PHP 5.2.x, 2047 sebelum ini

Cara menetapkan tahap pelaporan ralat dalam PHP:

1. Ubah suai fail konfigurasi PHP php.ini

Selepas menetapkan error_reporting dengan cara ini, mulakan semula pelayan web dan ia akan berkuat kuasa secara kekal.
Buka fail konfigurasi php.ini dan lihat nilai lalai peringkat pelaporan ralat error_reporting, seperti berikut:

error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT1.
Salin selepas log masuk

Ini bermakna melaporkan semua ralat, kecuali E_DEPRECATED dan E_STRICT.
Tukarnya kepada:

error_reporting=E_ALL &  ~E_NOTICE1.
Salin selepas log masuk

Ini bermakna melaporkan semua ralat kecuali E_NOTICE. Ini juga merupakan tahap pelaporan ralat yang paling biasa digunakan Ia tidak akan melaporkan ralat kelas perhatian (seperti menggunakan pembolehubah tidak ditentukan).
Simpan dan berkuat kuasa selepas memulakan semula pelayan web.

2. Gunakan fungsi error_reporting()

Selepas menetapkan dengan cara ini, ia boleh berkuat kuasa serta-merta. Tetapi hanya di kawasan di belakang panggilan fungsi error_reporting() dalam skrip semasa.

int error_reporting ([ int $level ] )1.
Salin selepas log masuk

Parameter boleh menjadi integer atau pengecam pemalar yang sepadan Anda disyorkan untuk menggunakan bentuk pemalar. Nilai pulangan ialah nilai (nilai integer) tahap pelaporan ralat yang berkuat kuasa di lokasi semasa.

Nota: Nilai lalai display_errors dalam fail konfigurasi php.ini ialah Hidup, yang bermaksud gesaan ralat dipaparkan Jika ditetapkan kepada Mati, semua gesaan ralat akan dimatikan.

Gunakan error_reporting(0) atau tambah @ di hadapan fungsi untuk menyekat output ralat untuk mengelakkan mesej ralat daripada membocorkan maklumat sensitif.

Tahap parameter

Tahap pelaporan_ralat baharu. Boleh menjadi bitmask atau pemalar bernama.

Adalah disyorkan untuk menggunakan pemalar bernama untuk memastikan keserasian dengan versi masa hadapan. Disebabkan penambahan tahap ralat dan peningkatan dalam julat nilai integer,

tahap ralat berasaskan integer yang lebih lama tidak akan sentiasa berkelakuan seperti yang diharapkan.

nilai kemungkinan tahap (tahap pelaporan ralat dalam php)

Biasa: kira-kira 15 keseluruhannya

Apakah tahap ralat dalam PHP?

15 sepadan dengan tepat dengan binari 15 bit.

Perlu diambil perhatian bahawa medan dalam jadual di atas tidak statik Versi PHP yang berbeza mungkin mempunyai nilai yang berbeza

Mana-mana nombor pilihan di atas boleh disambungkan dengan "OR". ATAU atau |) untuk melaporkan semua tahap ralat yang diperlukan.

Sebagai contoh, kod berikut mematikan ralat dan amaran yang ditentukan pengguna, menjalankan operasi tertentu dan kemudian kembali ke tahap ralat asal:

Contoh:

<?php
     error_reporting(0);                //禁用错误报告
     error_reporting(E_ERROR | E_WARNING | E_PARSE);//报告运行时错误
     error_reporting(E_ALL);            //报告所有错误
     error_reporting(E_ALL ^ E_NOTICE); //除E_NOTICE报告所有错误,是在php.ini的默认设置
     error_reporting(-1);               //报告所有 PHP 错误
     error_reporting(3);                //不报E_NOTICE
     error_reporting(11);               //报告所有错误
     ini_set(&#39;error_reporting&#39;, E_ALL); // 和 error_reporting(E_ALL); 一样
     error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);//表示php错误,警告,语法错误,提醒都返错。
?>
Salin selepas log masuk

Hubungan penukaran:

  • E_All: Perpuluhan ialah 30719, ditukar kepada perduaan ia ialah 111011111111111

  • E_NOTICE: Perpuluhan ditukar kepada perduaan ialah 1000

  • ~E_NOTICE: Tolak E_NOTICE dan menjadi 0111

  • E_ALL & ~E_NOTICE:: E_ALL dan ~E_NOTICE adalah Operasi AND, ia 111011111110111, yang ditukar kepada perpuluhan ialah 30711

    Anda boleh lihat bahawa E_ALL tidak menunjukkan semua ralat Bit ke-12 ialah 0. Berat bit ini ialah 2 hingga kuasa ke-11, iaitu 2048. Sebenarnya, Ia adalah nilai E_STRICT, jadi E_ALL memaparkan semua peringkat ralat kecuali E_STRICT.

  • Perduaan E_ALL & ~E_NOTICE boleh dilihat bahawa dari kanan ke kiri, bit ke-4 dan ke-12 ialah 0, dan berat bit ke-4 ialah 2 hingga kuasa ketiga, iaitu 8 ialah nilai E_NOTICE, jadi semua ralat kecuali E_STRICT dan E_NOTICE dipaparkan.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah tahap ralat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan