PHP 在响应一系列内部错误条件时报告错误。这些错误可能用于指示各种不同的条件,并可以根据需要显示和/或记录。
PHP 生成的每个错误都包含一个类型。有关这些错误类型以及它们的行为和原因的简要说明,请参阅 错误类型列表。
如果未设置错误处理程序,则 PHP 会根据其配置处理发生的任何错误。报告哪些错误以及忽略哪些错误由 error_reporting
php.ini 指令控制,或者在运行时通过调用 error_reporting() 控制。强烈建议设置配置指令,因为在执行脚本开始之前可能会发生一些错误。
在开发环境中,您应该始终将 error_reporting
设置为 E_ALL
,因为您需要了解并修复 PHP 提出 的问题。在生产环境中,您可能希望将其设置为较低的详细级别,例如 E_ALL & ~E_NOTICE & ~E_DEPRECATED
,但在许多情况下 E_ALL
也是合适的,因为它可以提供潜在问题的早期预警。
PHP 对这些错误的处理方式取决于另外两个 php.ini 指令。display_errors
控制是否将错误显示为脚本输出的一部分。这在生产环境中应始终禁用,因为它可能包含机密信息,例如数据库密码,但在开发中通常很有用,因为它可以确保立即报告问题。
除了显示错误外,当 log_errors
指令启用时,PHP 可以记录错误。这将把所有错误记录到由 error_log
定义的文件或 syslog 中。这在生产环境中非常有用,因为您可以记录发生的错误,然后根据这些错误生成报告。
如果 PHP 的默认错误处理不足,您还可以使用自己的自定义错误处理程序处理许多类型的错误,方法是使用 set_error_handler() 安装它。虽然有些错误类型无法通过这种方式处理,但可以处理的错误可以按照您的脚本认为合适的方式处理:例如,这可以用来向用户显示自定义错误页面,然后比通过日志更直接地报告错误,例如通过发送电子邮件。