Ubuntu 14.04上的php5.6没有显示默认错误处理程序错误

时间:2016-12-16 15:29:56

标签: php apache ubuntu

我最近在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(),但不起作用。

关于如何启用错误显示的任何想法?

1 个答案:

答案 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。

因此,如果你现在不重要,最好使用默认的错误处理程序。