【问题标题】:php5.6 on Ubuntu 14.04 is not showing errors with default error handlerUbuntu 14.04 上的 php5.6 未使用默认错误处理程序显示错误
【发布时间】:2016-12-16 15:29:56
【问题描述】:

我最近在 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 指向的文件是可写的。

而且我可以在命令链接或网络浏览器中显示错误。

我花了几个小时在网上搜索,我唯一认为我设法工作的方法是手动设置在一个脚本中处理的错误:

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"
}

我也尝试在脚本开始时恢复_error_handler(),但不起作用。

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

【问题讨论】:

    标签: php apache ubuntu


    【解决方案1】:

    你所拥有的东西很少连接,因为通常它应该可以工作,但我现在不知道你的 .php 里有什么,所以我试试这个:

    <?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。

    所以如果你现在不这样做,你最好使用默认的错误处理程序。

    【讨论】:

    • 我在脚本开头尝试了您的代码,但没有显示任何内容。错误日志为空。
    • 仅用于完整验证。请在register 行之后添加new NonClass();,然后再试一次,如果你看到了什么,请说。
    • 同样适用于php.ini:更改service apache2 restart 后必须重新启动apache。您是否也只更改了cli php.ini 或cgi 版本?或者可能将这两者混合在一起?
    • 重启机器后,场景发生了一点变化。现在从命令行调用的脚本会显示错误和堆栈跟踪。好 :) 除非在代码中设置了 error_reporting() 和 display_errors,否则从浏览器执行的脚本不会显示错误。似乎 /etc/php/5.6/apache2/php.ini 没有被读取
    • 当声明一个不存在的类时,错误会正常显示。但是,当错误来自不正确的 MySQL 语法时,什么都不会发生。
    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多