将 PDO 异常记录到 error_reporting 和 error_log

Posted

技术标签:

【中文标题】将 PDO 异常记录到 error_reporting 和 error_log【英文标题】:Logging PDO exception to error_reporting and error_log 【发布时间】:2017-12-31 17:27:47 【问题描述】:

目前我的脚本能够在浏览器上显示 PDO 异常,但它没有记录到错误文件。我宁愿使用 display_errors 关闭浏览器错误消息,并改为使用 error_log 将其记录到文件中。我不知道这是否可能,或者我是否需要编写一些自定义处理程序,或者它被框架覆盖。这是我在虚拟主机中的日志配置。请注意,它很好地记录了所有其他错误消息,包括通知。但它没有记录 PDO 异常。有什么想法吗?

我认为你可以忽略我的虚拟主机配置的 display_errors 的值。

    php_admin_flag log_errors on
    php_admin_flag display_errors on
    php_admin_value error_reporting 30719
    php_admin_value error_log "/....PATH/php.error.log"

【问题讨论】:

【参考方案1】:

事实证明,我需要重写独立于错误处理程序的异常处理程序。所以我需要将异常转发给错误处理程序。理论上,应该执行以下操作。

<?php
function exception_handler($exception) 
  echo "Uncaught exception: " , $exception->getMessage(), "\n";
  error_log(.....$exception->getMessage().....); //Yay it goes to my file now


set_exception_handler('exception_handler');

throw new Exception('Uncaught Exception');
echo "Not Executed\n";
?>

Research further here

【讨论】:

以上是关于将 PDO 异常记录到 error_reporting 和 error_log的主要内容,如果未能解决你的问题,请参考以下文章

当没有找到记录并且失败时,PHP PDO fetch 返回 FALSE

PDO 异常 SQLSTATE [23000]:在 php 中

使用 PDO 处理错误的最佳实践

使用 PDO 处理错误的最佳实践

PDO异常处理

PHP系列PHP错误异常处理