我正在使用mPDF类从HTML生成PDF。
虽然PDF显示的确如此,但我的CodeIgniter错误日志中包含错误通知,似乎是由于mPDF中的某些错误。
由于这些通知是无害的并且PDF完美无缺,所以我想要的是在运行此类时专门禁用CodeIgniter错误记录。
但我还没有办法做到这一点。
这是我的代码:
CONTROLLER
$this->load->helper('mpdf');
mpdf($html, $filename);
HELPER(mpdf_helper.php)
function mpdf($html, $filename)
{
$CI =& get_instance();
$CI->config->set_item('log_threshold', 0);
include('mpdf/mpdf.php');
$mpdf=new mPDF('', 'letter');
$mpdf->SetHTMLHeader('powered by example.com');
$mpdf->WriteHTML($html, 0);
$mpdf->Output($filename, 'I');
}
正如您所看到的,我正在尝试手动将log_threshold
的配置设置为0
,但这不会阻止错误记录。
仅供我index.php
define('ENVIRONMENT', 'production');
设置error_reporting(0)
。
你知道我应该做些什么来阻止CodeIgniter只在我运行mPDF时记录错误吗?
错误示例
ERROR - 2012-08-04 23:03:59 --> Severity: Notice --> Undefined index: direction /var/www/vhosts/asd.com/httpdocs/application/helpers/mpdf/mpdf.php 21103
ERROR - 2012-08-04 23:06:07 --> Severity: Notice --> Undefined index: MARGIN-TOP /var/www/vhosts/asd.com/httpdocs/application/helpers/mpdf/mpdf.php 17271
答案 0 :(得分:3)
这是因为codeigniter的错误记录与set_error_handler挂钩,而php将触发处理程序,无论error_reporting值是什么。正如php手册所说:
...但是你仍然可以读取error_reporting的当前值并采取适当的行动。
CI的默认错误处理程序不会执行日志记录(但会显示错误),just logs everything that comes in如果CI的内部错误级别需要记录。 (由{php}错误处理程序调用的log_threshold
配置值1,see the function。)
如果要使CI记录器尊重error_logging级别,可以使用standard method扩展CI_Exception类,如下所示:
class MY_Exceptions extends CI_Exceptions {
function log_exception($severity, $message, $filepath, $line) {
$current_reporting = error_reporting();
$should_report = $current_reporting & $serverity;
if ($shoud_report) {
// call the original implementation if we should report the error
parent::log_exception($severity, $message, $filepath, $line);
}
}
}
一旦你完成了这项工作,你就可以在你的图书馆电话中或在你的图书馆电话中使用error_reporting。