2016-07-06 4 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

출력 버퍼에 하나의 공간이 있음을 알았습니다. 그래서 오류 메시지가 너무 이상하게 보입니다. PHPZip이 버퍼가 비어 있지 않음을 감지하여 중지하도록 선택했습니다. 아래처럼 출력 버퍼를 정리하기 위해 sendZip 앞에 한 줄을 둡니다.

$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 소스 파일을 확인 하시길 권합니다. 어딘가에' ndm

+0

고마워. 나는 그것을 검사 할 것이다. – Frank

+0

내 코드에 cakephp-codesniffer 표준을 사용하고 있습니다. 예기치 않은 공백이 있으면 케이크가 말해 줬어. 그리고 내 자식 훅은 내 코드를 클라우드로 밀어 넣는 것을 막을 것이다. 그래도 팀에서 만든 모든 파일을 확인했습니다. 그리고 php open 태그 앞이나 뒤에 예기치 않은 공백이 없습니다. – Frank