2016-07-06 5 views
0

私はこの例外がありますが、その他の有用な詳細はありません。私はmpdf6.1.0とPHPZip2.0.8を使用しています。私のコードは以下のようです。PHPZipからのBufferNotEmptyの例外

$zip = new Zip(); 
$mpdf = null; 
foreach ($htmlArr as $name=>$html) { 
    if ($mpdf === null) { 
     $mpdf = initializePdf(); 
    } 
    $mpdf->WriteHTML($html); 
    $zip->addFile($mpdf->Output('', 'S'), $name, microtime()); 
    $mpdf = null; 
} 
$zip->sendZip('test.zip', "application/zip", 'test.zip'); 

initializePdf関数は以下のようになります。

function initializePdf() { 
    $mpdf = new mPDF('CJK', 'A4', '12px', '', 10, 10, 5, 5); 
    $mpdf->useAdobeCJK = true; 
    $mpdf->autoScriptToLang = true; 
    $mpdf->autoLangToFont = true; 
    $mpdf->SetDisplayMode('fullpage'); 
    $mpdf->autoMarginPadding = 1; 
    $mpdf->cropMarkLength = 0; 
    $mpdf->autoPageBreak = true; 

    return $mpdf; 
} 

htmlArrは完全に問題ありません。私はそれを数回チェックした。そして、$ zip-> addFile行にPDFファイルを出力できます。しかし、私はzipファイルで出力ストリームに変更するとき。 BufferNotEmpty例外が発生します。私を助けてください。 私はCakePHP3.2.3を使用しています。私は単純なPHPファイルにコードを分離するとき、それは完璧に正常に動作します。しかし、私はなぜ例外が発生するのかわかりません。そして、デバッグページに私のようなメッセージが表示されます。

Unable to send 'test.zip'. Output buffer contains the following text (typically warning or errors): 
+0

私はCakePHP3.2.3を使用しています。私は単純なPHPファイルにコードを分離するとき、それは完璧に正常に動作します。しかし、私はなぜ例外が発生するのかわかりません。そして、デバッグページに私にこのようなメッセージが表示されます – Frank

答えて

0

出力バッファには1つのスペースしかありません。だからこそ、エラーメッセージはとても酷く見えます。 PHPZipはバッファが空でないことを検出したため停止することを選択しました。私は以下のように出力バッファをクリーニングするためにsendZipの前に1行付けます。

$zip = new Zip(); 
$mpdf = null; 
foreach ($htmlArr as $name=>$html) { 
    if ($mpdf === null) { 
     $mpdf = initializePdf(); 
    } 
    $mpdf->WriteHTML($html); 
    $zip->addFile($mpdf->Output('', 'S'), $name, microtime()); 
    $mpdf = null; 
} 
// clean buffer 
ob_clean(); 
// send zip stream to browser 
$zip->sendZip('test.zip', "application/zip", 'test.zip'); 
+1

代わりにPHPソースファイルをチェックすることをお勧めします。どこかで '<?php'の前に空白があるかもしれません。これは、ヘッダーやCookieを送信する場合など、他の状況でも問題を引き起こす可能性があります。 – ndm

+0

ありがとうございました。私はそれを確認します。 – Frank

+0

私は自分のコードにcakephp-codesniffer標準を使用しています。予期しない空白があると、Cakeは私に言ったでしょう。そして、私のgitのフックは私のコードをクラウドにプッシュするのを止めるでしょう。それでも私のチームが作成したすべてのファイルをチェックしました。 PHPの公開タグの前後に予期しない空白がありません。 – Frank

関連する問題