PHP 错误处理函数

错误函数的行为受到php.ini中设置的影响。

错误和日志记录配置选项

描述即使display_errors处于启用状态,也不会显示PHP启动序列中发生的错误。强烈建议关闭display_startup_errors,调试除外
注意:在PHP 8.0.0之前,默认值为"0"不要记录重复的消息。除非将其设置为"1",否则同一文件中的同一行必须出现重复错误如果启用,最后一条错误消息将始终出现在变量$php_errorsg中
注意:从PHP 7.2.0开始弃用,从PHP 8.0.0开始删除PHP_INI_ALL
名称默认描述可更改
error_reportingNULL设置错误报告级别。该参数可以是表示位字段的整数,也可以是命名常量PHP_INI_ALL
display_errors"1"确定错误是应该作为输出的一部分打印到屏幕上,还是应该对用户隐藏
注意:提供此功能是为了支持开发,绝不应在生产系统上使用
PHP_INI_ALL
display_startup_errors"1"PHP_INI_ALL
log_errors"0"定义是将脚本错误消息记录到服务器的错误日志中,还是将错误日志记录到中。因此,此选项是特定于服务器的
注意:强烈建议使用错误日志记录,而不是在生产网站上显示错误
PHP_INI_ALL
log_errors_max_len"1024"设置log_errors的最大长度(以字节为单位)。在error_log中,添加了有关源的信息。默认值为1024,0允许根本不应用任何最大长度。此长度适用于记录的错误、显示的错误以及$php_errormsg,但不适用于显式调用的函数,如error_log()PHP_INI_ALL
ignore_repeated_errors"0"PHP_INI_ALL
ignore_repeated_source"0"忽略重复消息时忽略消息源。当设置为"1"时,它将不会记录来自不同文件或源行的重复消息的错误PHP_INI_ALL
report_memleaks"1"如果设置为"1"(默认值),此参数将显示Zend内存管理器检测到的内存泄漏报告PHP_INI_ALL
track_errors"0"PHP_INI_ALL
html_errors"1"如果启用,错误消息将包括html标记。HTML错误的格式会产生可点击的消息,将用户引导到描述错误或导致错误的功能的页面。这些引用受docref_root和docref_ext的影响。如果禁用,则错误消息将仅为纯文本PHP_INI_ALL
xmlrpc_errors"0"如果启用,则关闭正常错误报告并将错误格式化为XML-RPC错误消息PHP_INI_SYSTEM
xmlrpc_error_number"0"用作XML-RPC faultCode元素的值PHP_INI_ALL
docref_root""新的错误格式包含对描述错误或导致错误的函数的页面的引用。如果是手册页面,我们可以下载该语言的手册,并将此ini指令设置为本地副本的URL。如果我们的本地手册副本可以通过“/manual/”访问,我们可以简单地使用docref_root=/manual/。另外,我们必须设置docref_ext以匹配我们的副本docref_ext=.html的文件扩展名。可以使用外部引用。例如-docref_root=http://manual/en/或docref_root=“http://landonize.it/?how=url&theme=classic&filter=Landon&url=http%3A%2F%2Fwww.php.net%2F“

注意:这是一个支持开发的功能,因为它可以很容易地查找函数描述。但是,它不应用于生产系统。
PHP_INI_ALL
docref_ext""请参见docref_root
注意:docref_ext的值必须以点"."开头
PHP_INI_ALL
error_prepend_stringNULL错误消息前输出的字符串
error_append_stringNULL错误消息后输出的字符串PHP_INI_ALL
error_logNULL指定应记录脚本错误的文件名。该文件应可由web服务器的用户写入。如果使用了特殊值syslog,则会将错误发送到系统记录器PHP_INI_ALL
syslog.facility "LOG_USER"指定记录消息的程序类型。仅当error_log设置为"syslog"时有效
注意:从PHP 7.3.0开始提供
PHP_INI_SYSTEM
syslog.filter "no ctrl"指定用于筛选记录的消息的筛选器类型。允许的字符未经修改地传递。所有其他都以十六进制表示形式编写,前缀为\x。
  • all–记录的字符串将在换行符处拆分,并且所有字符都不更改地传递
  • ascii–记录的字符串将在换行符处拆分,并且将转义任何不可打印的7位ascii字符
  • no ctrl–记录的字符串将在换行符处拆分,并且将转义任何不可打印的字符
  • raw–所有字符都原封不动地传递给系统记录器,而不会在换行处进行拆分
此设置将通过error_log设置为"syslog"并调用syslog()来影响日志记录。
注意:从PHP 7.3.0开始提供。原始过滤器类型从PHP 7.3.8和PHP 7.4.0开始提供。Windows不支持此指令
PHP_INI_ALL
syslog.ident "php"指定每个消息前面的ident字符串。仅当error_log设置为"syslog"时有效
注意:从PHP 7.3.0开始提供
PHP_INI_SYSTEM