php错误级别
php共有16个错误级别,分别如下:
E_ERROR
这种错误是Fatal Error, 程序无法继续执行, 例如调用一个未定义的方法
Fatal error: Call to undefined function test() in /data/wwwroot/test/index.php on line 5
test();
E_WARNING
这种错误是运行时警告,不会终止脚本继续进行,例如require一个不存在的文件
PHP Warning: require(a.php): failed to open stream: No such file or directory in /home/ning/sandisk/projects/php/t.php on line 3
E_NOTICE
这种错误更为轻微一些,是运行时错误,一般是代码的bug引起的,例如使用一个未定义的变量
PHP Notice: Undefined variable: a in /home/ning/sandisk/projects/php/t.php on line 3
E_PARSE
这种是编译时解析错误 ,例如结尾忘记了分号
PHP Parse error: syntax error, unexpected end of file, expecting ',' or ';' in /home/ning/sandisk/projects/php/t.php on line 5
E_STRICT
这种错误是PHP5之后引入的,代码可以运行,但不是PHP建议的写法,以确保代码具有最佳的互操作性和向前兼容性,例如函数形参传递++符号
function change ( & $var ) {
$var += 10 ;
}
$var = 1 ;
change ( ++ $var );
E_RECOVERABLE_ERROR
PHP 5.2.0之后引入,可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获,将成为一个 E_ERROR从而导致脚本终止运行。
E_DEPRECATED
PHP 5.3.0之后引入,运行时通知,启用后将会对在未来版本中可能无法正常工作的代码给出警告。
E_CORE_ERROR
在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。
E_CORE_WARNING
PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。
E_COMPILE_ERROR
致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。
E_COMPILE_WARNING
编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。
E_USER_ERROR
用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数trigger_error()来产生的。
E_USER_WARNING
用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数trigger_error()来产生的。
E_USER_NOTICE
用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
E_USER_DEPRECATED
用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数trigger_error()来产生的。
E_ALL
E_STRICT除外的所有错误和警告信息。
php.ini中错误控制的配置
#报告错误级别,什么级别的
error_reporting = E_ALL
#php中的错误显示的日志位置
error_log = /tmp/php_errors.log
#是否把错误展示在输出上,这个输出可能是页面,也可能是stdout
display_errors = On
#是否把启动过程的错误信息显示在页面上,记得上面说的有几个Core类型的错误是启动时候发生的,这个就是控制这些错误是否显示页面的。
display_startup_errors = On
#是否要记录错误日志
log_errors = On
#错误日志的最大长度
log_errors_max_len = 1024
#是否忽略重复的错误,On表示如果有重复的日志,那么就只会记录一条
ignore_repeated_errors = Off
#是否使用全局变量$php_errormsg来记录最后一个错误
track_errors = Off
#是否使用XML-RPC的错误信息格式记录错误
xmlrpc_errors = 0
#用作 XML-RPC faultCode 元素的值。
xmlrpc_error_number = 0
#是否把输出中的函数等信息变为HTML链接
html_errors = On
# 如果html_errors开启了,这个链接的根路径是什么
docref_root = http://manual/en/
#是否把php错误抛出到fastcgi中
fastcgi . logging = 0
php-fpm中错误控制的配置
#php-fpm自身的日志
error_log = /var/log/php-fpm/error.log
# php-fpm自身的日志记录级别
log_level = notice
#覆盖php.ini中的某个配置变量,可被程序中的ini_set覆盖
php_flag[display_errors] = off
#同php_flag
php_value[display_errors] = off
#覆盖php.ini中的某个配置变量,不可被程序中的ini_set覆盖
php_admin_value[error_log] = /tmp/www-error.log,不能在代码中使用ini_set把这个变量重新赋值了
#同php_admin_value
php_admin_flag[log_errors] = on,不能在代码中使用ini_set把这个变量重新赋值了
#是否抓取fpmworker的输出
catch_workers_output = yes
#慢日志时长
request_slowlog_timeout = 0
#慢日志记录
slowlog = /var/log/php-fpm/www-slow.log
php-fpm的error_log只记录php-fpm本身的日志,比如fpm启动关闭等,而php.ini中的error_log是记录php程序本身的错误日志。