标头已发送错误我正在使用cURL php dompdf

时间:2013-03-25 20:15:24

标签: php curl dompdf

我正在构建一些报告,我的代码在localhost上工作正常,但在服务器上出错,我该如何修复...

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /localhost/prepare.php:1) in /localhost/prepare.php on line 2
Unable to stream pdf: headers already sent

这里是prepare.php

<?php
session_start();
if(isset($_SESSION['usercode']) && isset($_GET['id']))
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://localhost/report/formats/'.$_GET['id'].'.php?id='.$_SESSION['usercode']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $st = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
    $my_html = curl_exec($ch);
    if($st==200)
       $my_html="Oops! Something went wrong...$st";
    curl_close($ch);

    require_once("./domppdf/dompdf_config.inc.php");
    $dompdf = new DOMPDF();
    $dompdf->load_html($my_html);
    $dompdf->render();
    $dompdf->stream("report.pdf", array('Attachment'=>'0'));
}
?>

1 个答案:

答案 0 :(得分:2)

出现此错误,因为您在开始会话之前已将ANYTHING输出到用户客户端(浏览器)。

从您的代码判断,我认为它是一个'字节顺序掩码'(也称为BOM),通常用于确定多字节符号的第一个字节是MSB还是LSB。

此代码在任何支持它的文本编辑器中都是不可见的,并且在没有问号的情况下显示为带问号的钻石。

如果您不知道是否已启用BOM,请随意使用十六进制编辑器打开源文件,并检查第一个字符是<?php还是其他字符。

一个好的文本编辑器将允许您选择编码。 UTF8 without BOM是一个不错的选择,Notepad++在我看来是一个很好的编辑。