我最近在Ubuntu 14.04上安装了apache2和php5.6 在用于apache和cli的php.ini中,我使用正确的配置设置了所有参数(我认为):
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
track_errors = On
error_log = "/var/log/php_errors.log"
error_log指向的文件是可写的。
我可以在命令linke或web浏览器中显示错误。
我花了几个小时搜索网页,我唯一想到的工作就是手动设置一个脚本中处理的错误:
set_error_handler("var_dump");
更改错误处理程序时会打印一些信息(我强制的mysql错误):
$ php informe_presupuestos.php
/var/www/buv/lib/sqlquery.class.php:88:
int(2)
/var/www/buv/lib/sqlquery.class.php:88:
string(72) "mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given"
/var/www/buv/lib/sqlquery.class.php:88:
string(66) "/var/www/buv/lib/sqlquery.class.php"
/var/www/buv/lib/sqlquery.class.php:88:
int(88)
/var/www/buv/lib/sqlquery.class.php:88:
array(1) {
'result_id' =>
string(4) "pres"
}
我还尝试在脚本开始时执行restore_error_handler(),但不起作用。
关于如何启用错误显示的任何想法?
答案 0 :(得分:0)
你接触的东西很少,因为它应该有效,但我现在不在你的.php
中,所以mybe试试这个:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
register_shutdown_function(function(){while(ob_get_level()>0)ob_end_flush();});
顺便说一下,在测试脚本时/var/log/php_errors.log
的内容是什么。
来自http://php.net/manual/en/function.set-error-handler.php的注释:
使用用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,以及调用set_error_handler()的文件中引发的大部分E_STRICT。
因此,如果你现在不重要,最好使用默认的错误处理程序。