PHP - 调试Bug



PHP 代码中的bug指的是程序中的错误,会导致意外结果或崩溃。在用户发现bug之前,系统地查找bug的过程称为调试。本章提供了一些在PHP代码中追踪bug的重要技巧。

程序很少能第一次就正确运行。你的程序中可能出现很多问题,导致PHP解释器生成错误消息。你可以选择错误消息的输出位置。消息可以与其他程序输出一起发送到Web浏览器。它们也可以包含在“Web服务器错误日志”中。

要在浏览器中显示错误消息,请将“display_errors”配置指令设置为ON。确保在“php.ini”文件中启用了以下设置。

display_errors=On
display_startup_errors=On

你也可以使用ini_set()函数来覆盖“php.ini”配置:

ini_set('display_errors', 1)
ini_set('display_startup_errors', 1)

要将错误发送到Web服务器错误日志,请将“log_errors”设置为ON。如果你想同时在两个位置显示错误消息,可以将它们都设置为On。

PHP定义了一些常量,你可以使用它们来设置error_reporting的值,以便只报告特定类型的错误:

  • E_ALL(所有错误,除了严格通知)

  • E_PARSE(解析错误)

  • E_ERROR(致命错误)

  • E_WARNING(警告)

  • E_NOTICE(通知)

  • E_STRICT(严格通知)

编写PHP程序时,最好使用支持PHP的编辑器,如BBEdit或Emacs。这些编辑器的特殊功能之一是语法高亮显示。它会根据程序不同部分的内容更改其颜色。例如,字符串为粉色,if和while等关键字为蓝色,注释为灰色,变量为黑色。

微软的VS Code也是编辑PHP代码的好选择。如果你安装了VS Code扩展Intelephense,你将在编辑器窗口输入PHP语句时获得类型提示和错误消息。

另一个功能是引号和括号匹配,这有助于确保引号和括号平衡。当你输入一个结束分隔符,例如“}”,编辑器会突出显示它匹配的开始“{”。

调试代码时需要检查的要点

调试程序代码时,需要验证以下几点:

缺少分号

每个PHP语句都以分号(;)结尾。PHP不会停止读取语句,直到它到达分号。如果你省略一行末尾的分号,PHP将继续读取下一行的语句。

等号不够

当你在比较语句中询问两个值是否相等时,需要两个等号(==)。使用一个等号是一个常见的错误。

变量名拼写错误

如果变量名拼写错误,PHP会将其理解为一个新的变量。记住:对PHP来说,$test与$Test不是同一个变量。

缺少美元符号

变量名中缺少美元符号很难发现,但至少它通常会导致错误消息,这样你就能知道在哪里查找问题。

引号问题

引号可能过多、过少或类型错误。因此,请检查引号是否平衡。

缺少括号和花括号

它们应该总是成对出现。

数组索引

PHP中的数组是项目的集合,每个项目都分配一个从0开始递增的索引。

此外,要正确处理所有错误,并将所有跟踪消息定向到系统日志文件,以便如果发生任何问题,它将被记录到系统日志文件中,你将能够调试该问题。

广告