1

mPDF クラスを使用して、HTML から PDF を生成しています。

PDF は本来のとおりに表示されますが、CodeIgniter のエラー ログには、mPDF のバグが原因と思われるエラー通知が表示されます。

これらの通知は無害であり、PDF は完全に出力されるため、このクラスを実行するときは特に CodeIgniter のエラー ログを無効にするだけで済みます。

しかし、私はこれを行う方法を見つけていません。

これが私のコードです:

コントローラ

$this->load->helper('mpdf');
mpdf($html, $filename);

ヘルパー (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_threshold0いますが、エラー ログは妨げられません。

参考までに、私index.phpは持っています

define('ENVIRONMENT', 'production');

を設定しますerror_reporting(0)

mPDF を実行したときにのみ CodeIgniter がエラーをログに記録しないようにするにはどうすればよいか知っていますか?

エラーの例

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
4

1 に答える 1

3

これは、codeigniter のエラー ログがset_error_handlerに接続されており、php が error_reporting の値に関係なくハンドラーを起動するためです。PHPマニュアルにあるように:

...ただし、error_reporting の現在の値を読み取って適切に対処することはできます。

CI のデフォルトのエラー ハンドラーは、ログ記録にはそれを行いません (ただし、エラー表示には行います) 。CI の内部エラー レベルがログ記録を要求する場合は、入ってくるすべてのものをログに記録するだけです。(log_threshold設定値 1、php エラー ハンドラによって呼び出される関数を参照してください。)

CI ロガーに error_logging レベルを尊重させたい場合は、次のような標準メソッドで 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 をいじることができます。

于 2012-08-05T13:43:29.033 に答える