error_reporting(E_ALL);ini_set("display_errors", "On");E_ERROR
// Fatal error: Call to undefined function hpinfo() in /tmp/php/index.php on line 5hpinfo(); //E_ERROR注意,如果有未被捕获的异常,也是会触发这个级别的。
// Fatal error: Uncaught exception "Exception" with message "test exception" in /tmp/php/index.php:5 Stack trace: #0 {main} thrown in /tmp/php/index.php on line 5throw new Exception("test exception"); E_WARNING//Warning: include(a.php): failed to open stream: No such file or directory in /tmp/php/index.php on line 7//Warning: include(): Failed opening "a.php" for inclusion (include_path=".:/usr/share/pear:/usr/share/php") in /tmp/php/index.php on line 7include("a.php"); //E_WARNINGE_NOTICE
//Notice: Undefined variable: b in /tmp/php/index.php on line 9$a = $b; //E_NOTICEE_PARSE
// Parse error: syntax error, unexpected "=" in /tmp/php/index.php on line 20z=1; // E_PARSEE_STRICT
// Strict Standards: Only variables should be passed by reference in /tmp/php/index.php on line 17function change (&$var) {$var += 10;}$var = 1;change(++$var);// E_STRICT E_RECOVERABLE_ERROR//Catchable fatal error: Argument 1 passed to testCall() must be an instance of A, instance of B given, called in /tmp/php/index.php on line 37 and defined in /tmp/php/index.php on line 33class A {}class B {}function testCall(A $a) {}$b = new B();testCall($b); // Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in /tmp/php/index.php on line 42$ch = curl_init("http://www.remotesite.com/upload.php");curl_setopt($ch, CURLOPT_POSTFIELDS, array("fileupload" => "@". "test"));E_CORE_ERROR, E_CORE_WARNING
trigger_error("Cannot divide by zero", E_USER_ERROR);// E_USER_ERROR// E_USER_WARING// E_USER_NOTICE// E_USER_DEPRECATEDE_ALL
error_reporting = E_ALL // 报告错误级别,什么级别的error_log = /tmp/php_errors.log // php中的错误显示的日志位置display_errors = On // 是否把错误展示在输出上,这个输出可能是页面,也可能是stdoutdisplay_startup_errors = On // 是否把启动过程的错误信息显示在页面上,记得上面说的有几个Core类型的错误是启动时候发生的,这个就是控制这些错误是否显示页面的。log_errors = On // 是否要记录错误日志log_errors_max_len = 1024 // 错误日志的最大长度ignore_repeated_errors = Off // 是否忽略重复的错误track_errors = Off // 是否使用全局变量$php_errormsg来记录最后一个错误xmlrpc_errors = 0 //是否使用XML-RPC的错误信息格式记录错误xmlrpc_error_number = 0 // 用作 XML-RPC faultCode 元素的值。html_errors = On // 是否把输出中的函数等信息变为HTML链接docref_root = http://manual/en/ // 如果html_errors开启了,这个链接的根路径是什么fastcgi.logging = 0 // 是否把php错误抛出到fastcgi中我们经常会被问到,error_reporting和display_errors有什么区别呢?这两个函数是完全不一样的。
error_reporting(E_ALL);ini_set("ignore_repeated_errors", 1);ini_set("ignore_repeated_source", 1);$a = $c; $a = $c; //E_NOTICE//Notice: Undefined variable: c in /tmp/php/index.php on line 20本来会出现两次NOTICE的,但是现在,只会出现一次了...
error_reporting(E_ALL);ini_set("html_errors", 1);ini_set("docref_root", "https://secure.php.net/manual/zh/");include("a2.php"); //E_WARNING

能让你快速定位到我们出现错误的地方。是不是很人性~
php-fpm中的配置
error_log = /var/log/php-fpm/error.log // php-fpm自身的日志log_level = notice // php-fpm自身的日志记录级别php_flag[display_errors] = off // 覆盖php.ini中的某个配置变量,可被程序中的ini_set覆盖php_value[display_errors] = off // 同php_flagphp_admin_value[error_log] = /tmp/www-error.log // 覆盖php.ini中的某个配置变量,不可被程序中的ini_set覆盖php_admin_flag[log_errors] = on // 同php_admin_valuecatch_workers_output = yes // 是否抓取fpmworker的输出request_slowlog_timeout = 0 // 慢日志时长slowlog = /var/log/php-fpm/www-slow.log // 慢日志记录php-fpm的配置中也有一个error_log配置,这个很经常会和php.ini中的error_log配置弄混。但他们记录的东西是不一样的,