Php ob_get_contents失败

时间:2012-12-25 12:19:07

标签: php output-buffering ob-get-contents

我正在使用ob_get_contents()从php文件创建一个html文件。在开发机器上,有时它可以工作,但在测试机器上它不起作用。

<html>
<body>
    <div>
       //some html content
    </div>
</body>
</html>

<?php
    ob_start();
    file_put_contents('./pdfreportresult.html', ob_get_contents());

    require_once (APP_DIR . 'assessment/wkhtmltopdf/snappy-master/src/autoload.php');

    use Knp\Snappy\Pdf;

    $snappy = new Pdf(APP_DIR . 'assessment/wkhtmltopdf/wkhtmltopdf.exe');

    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="report.pdf"');
    echo $snappy->getOutput(APP_DIR . 'assessment/pdfreportresult.html');
    ob_end_clean();
?>

我检查了测试机器的php.ini是否为output_buffering,它在开发机器上是“On”。当我检查我创建的html文件“pdfreportresult.html”时,它是空的或存在半内容。

也许问题可能与缓冲区大小有关,我试过ob_clean()而不是ob_end_clean()仍然无法正常工作。

1 个答案:

答案 0 :(得分:3)

在开始输出内容之前启动缓冲区。此外,一旦完成,请清洁缓冲区。

<?php
ob_start();
?>
<html>
<body>
    <div>
       //some html content
    </div>
</body>
</html>

<?php
file_put_contents('./pdfreportresult.html', ob_get_contents());
ob_end_clean();
...