Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Permudahkan penyahpepijatan dengan PHP error_reporting

Permudahkan penyahpepijatan dengan PHP error_reporting

王林
王林asal
2023-08-31 10:29:091536semak imbas

使用 PHP error_reporting 简化调试

Hari ini, kita akan belajar cara menggunakan fungsi error_reporting untuk nyahpepijat dalam PHP. error_reporting 函数进行调试。

error_reporting 函数允许您配置在 PHP 脚本中报告哪些错误。事实上,当您在 PHP 脚本中使用 error_reporting 函数时,它只是在运行时设置 error_reporting 指令。如果您了解 php.ini 配置文件,它提供了许多用于不同目的的配置指令,error_reporting 指令就是其中之一。具体来说,error_reporting 指令允许您在 PHP 脚本中设置错误报告级别。

在这篇简短的文章中,我们将介绍 error_reporting 函数的基础知识,并将讨论如何在日常 PHP 开发中有效地使用它。

语法

让我们快速浏览一下 error_reporting 函数的语法。

error_reporting(int $error_level = null): int

它需要一个参数,允许您传递要设置的错误级别。它是一个可选参数,因此如果您不传递它,它应该返回当前的错误报告级别。

您可以在此参数中传递位掩码或命名常量。但是,建议传递命名常量以兼容未来的 PHP 版本。另外,如果您使用命名常量,它也会提高代码的可读性。

您可以在 error_reporting 函数的第一个参数中传递不同的错误常量。以下是所有常量的快速列表。

  • E_ERROR: 显示致命运行时错误
  • E_WARNING:显示运行时警告
  • E_PARSE:显示编译时解析错误
  • E_NOTICE:显示运行时通知
  • E_CORE_ERROR: 显示 PHP 初始启动期间发生的致命错误
  • E_CORE_WARNING:显示 PHP 初始启动期间发生的警告
  • E_COMPILE_ERROR: 显示致命编译时错误
  • E_COMPILE_WARNING:显示致命编译时警告
  • E_USER_ERROR:显示用户生成的错误消息
  • E_USER_WARNING:显示用户生成的警告消息
  • E_USER_NOTICE:显示用户生成的通知消息
  • E_STRICT:建议更改您的代码,以确保最佳的互操作性和前向兼容性
  • E_RECOVERABLE_ERROR:显示可捕获的致命错误
  • E_DEPRECATED:显示有关在未来版本中不起作用的代码的警告
  • E_USER_DEPRECATED:与 E_DEPRECATED 类似,但它只显示用户生成的警告消息
  • E_ALL:显示所有错误、警告和通知

每个常量都允许您设置不同级别的错误报告。在下一节中,我们将了解如何在日常 PHP 开发中使用 error_reporting 函数。

如何使用error_reporting函数

在上一节中,我们了解了 error_reporting 函数的语法。在本节中,我们将了解如何在 PHP 脚本中使用它。

显示所有错误

让我们快速浏览一下以下示例。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $foo;
?>

在上面的示例中,我们在 error_reporting 函数的第一个参数中传递了 E_ALL 常量,因此,它将显示脚本中的所有错误、警告和通知。如果运行上面的脚本,它应该显示以下错误。

Notice: Undefined variable: foo in /web/demo/error_reporting.php on line 4

由于我们使用 $foo 变量而没有事先定义它,因此它会抛出一条通知,通知您应该在实际使用它之前定义 $foo 变量。

或者,您也可以传递 -1 而不是 E_ALL 常量,如以下代码片段所示,它会显示所有可能的错误。

<?php
error_reporting(-1);
?>

E_ALL 常量对于调试著名的 WSOD(死机白屏)错误非常有用。

显示除通知之外的所有错误

让我们看一下下面的例子。

<?php
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);
echo $foo;
?>

当您使用 error_reporting 函数时,您可以使用 &|~ 等运算符来忽略和过滤特定类型的错误。在上面的示例中,我们想要显示除通知之外的所有类型的错误,因此,我们在 E_NOTICE 常量前面使用了 ~ 运算符。如果运行上面的脚本,它不会显示仅使用 E_ALL 常量时应显示的通知。

显示通知和警告

在本节中,我们将了解如何仅显示特定类型的错误。让我们快速浏览一下以下示例。

<?php
error_reporting(E_WARNING | E_NOTICE);
ini_set('display_errors', 1);
include "foo_bar.php";
echo $foo;
?>

在上面的示例中,我们指示 error_reporting 函数希望仅显示警告和通知。正如您所看到的,我们使用了 |

Fungsi error_reporting membolehkan anda mengkonfigurasi ralat mana yang dilaporkan dalam skrip PHP. Malah, apabila anda menggunakan fungsi error_reporting dalam skrip PHP, ia hanya menetapkan arahan error_reporting pada masa jalan. Jika anda tahu tentang fail konfigurasi php.ini, ia menyediakan banyak arahan konfigurasi untuk tujuan yang berbeza dan arahan error_reporting adalah salah satu daripadanya. Khususnya, arahan error_reporting membolehkan anda menetapkan tahap pelaporan ralat dalam skrip PHP. #🎜🎜# #🎜🎜#Dalam artikel pendek ini, kami akan memperkenalkan asas fungsi error_reporting dan membincangkan cara menggunakannya dengan berkesan dalam pembangunan PHP harian. #🎜🎜#

Tatabahasa

#🎜🎜#Mari kita lihat sintaks fungsi error_reporting. #🎜🎜# rrreee #🎜🎜#Ia memerlukan parameter yang membolehkan anda melepasi tahap ralat yang anda ingin tetapkan. Ia adalah parameter pilihan, jadi jika anda tidak melepasinya, ia harus mengembalikan tahap pelaporan ralat semasa. #🎜🎜# #🎜🎜#Anda boleh menghantar bitmask atau dinamakan pemalar dalam parameter ini. Walau bagaimanapun, adalah disyorkan untuk menghantar pemalar dinamakan untuk keserasian dengan versi PHP masa hadapan. Selain itu, jika anda menggunakan pemalar bernama, ia juga meningkatkan kebolehbacaan kod anda. #🎜🎜# #🎜🎜#Anda boleh menghantar pemalar ralat yang berbeza dalam parameter pertama fungsi error_reporting. Di bawah ialah senarai pantas semua pemalar. #🎜🎜#
  • E_ERROR: Paparkan ralat masa jalan yang membawa maut
  • E_WARNING: Paparkan amaran masa jalan
  • E_PARSE: Memaparkan ralat penghuraian masa kompilasi
  • E_NOTICE: Paparkan pemberitahuan masa jalan
  • E_CORE_ERROR: Memaparkan ralat maut yang berlaku semasa permulaan permulaan PHP
  • E_CORE_WARNING: Memaparkan amaran yang berlaku semasa permulaan permulaan PHP
  • E_COMPILE_ERROR: Memaparkan ralat masa kompilasi yang membawa maut
  • E_COMPILE_WARNING: Paparkan amaran masa kompilasi maut
  • E_USER_ERROR: Memaparkan mesej ralat yang dijana pengguna
  • E_USER_WARNING: Memaparkan mesej amaran yang dijana pengguna
  • E_USER_NOTICE: Paparkan mesej pemberitahuan yang dijana pengguna
  • E_STRICT: Mengesyorkan perubahan pada kod anda untuk memastikan kesalingoperasian optimum dan keserasian ke hadapan
  • E_RECOVERABLE_ERROR: Memaparkan ralat maut yang boleh ditangkap
  • E_DEPRECATED: Tunjukkan amaran tentang kod yang tidak akan berfungsi dalam versi akan datang
  • E_USER_DEPRECATED: Sama seperti E_DEPRECATED, tetapi ia hanya memaparkan mesej amaran yang dijana pengguna
  • E_ALL: Tunjukkan semua ralat, amaran dan pemberitahuan
#🎜🎜#Setiap pemalar membolehkan anda menetapkan tahap pelaporan ralat yang berbeza. Dalam bahagian seterusnya, kita akan melihat cara menggunakan fungsi error_reporting dalam pembangunan PHP harian. #🎜🎜#

Cara menggunakan fungsi error_reporting

#🎜🎜#Dalam bahagian sebelumnya, kami mempelajari tentang sintaks fungsi error_reporting. Dalam bahagian ini, kita akan melihat cara menggunakannya dalam skrip PHP. #🎜🎜#

Tunjukkan semua ralat

#🎜🎜# Mari kita lihat sekilas contoh berikut. #🎜🎜# rrreee #🎜🎜#Dalam contoh di atas, kami melepasi pemalar E_ALL dalam parameter pertama fungsi error_reporting, oleh itu, ia akan memaparkan semua ralat dalam skrip, Amaran dan Notis. Jika anda menjalankan skrip di atas, ia sepatutnya menunjukkan ralat berikut. #🎜🎜# rrreee #🎜🎜# Memandangkan kami menggunakan pembolehubah $foo tanpa mentakrifkannya terlebih dahulu, ia akan menghantar pemberitahuan bahawa anda harus mentakrifkan pembolehubah $foo sebelum benar-benar menggunakannya . #🎜🎜# #🎜🎜#Sebagai alternatif, anda boleh menghantar -1 dan bukannya pemalar E_ALL, seperti yang ditunjukkan dalam coretan kod berikut, yang akan memaparkan semua kemungkinan ralat. #🎜🎜# rrreee Pemalar #🎜🎜#E_ALL sangat berguna untuk menyahpepijat ralat WSOD (White Screen of Death) yang terkenal. #🎜🎜#

Tunjukkan semua ralat kecuali pemberitahuan

#🎜🎜# Mari kita lihat contoh di bawah. #🎜🎜# rrreee #🎜🎜#Apabila anda menggunakan fungsi error_reporting, anda boleh menggunakan operator seperti &, | dan ~ untuk mengabaikan dan menapis jenis ralat tertentu. Dalam contoh di atas, kami ingin memaparkan semua jenis ralat kecuali pemberitahuan, jadi kami menggunakan operator ~ di hadapan pemalar E_NOTICE. Jika anda menjalankan skrip di atas, ia tidak menunjukkan pemberitahuan yang sepatutnya ditunjukkan jika anda hanya menggunakan pemalar E_ALL. #🎜🎜#

Tunjukkan pemberitahuan dan amaran

#🎜🎜#Dalam bahagian ini, kita akan belajar cara memaparkan jenis ralat tertentu sahaja. Mari kita lihat sekilas contoh berikut. #🎜🎜# rrreee #🎜🎜#Dalam contoh di atas, kami mengarahkan fungsi error_reporting bahawa kami hanya mahu amaran dan pemberitahuan dipaparkan. Seperti yang anda lihat, kami menggunakan operator | supaya ia akan menunjukkan kedua-dua jenis ralat. #🎜🎜#

Ini adalah cara menggunakan fungsi error_reporting dan pelbagai jenis pemalar ralat untuk nyahpepijat dalam pembangunan PHP harian. error_reporting 函数和不同类型的错误常量进行调试。

结论

今天,我们讨论了如何使用 PHP 中的 error_reporting

Kesimpulan

Hari ini, kami membincangkan cara menggunakan fungsi error_reporting dalam PHP untuk menyahpepijat ralat dalam skrip PHP. Kami membincangkan cara ia boleh digunakan untuk memaparkan ralat pada tahap yang berbeza semasa pembangunan. 🎜

Atas ialah kandungan terperinci Permudahkan penyahpepijatan dengan PHP error_reporting. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:Parameter konteks PHPArtikel seterusnya:Parameter konteks PHP