我正在构建一些报告,我的代码在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'));
}
?>
答案 0 :(得分:2)
出现此错误,因为您在开始会话之前已将ANYTHING输出到用户客户端(浏览器)。
从您的代码判断,我认为它是一个'字节顺序掩码'(也称为BOM),通常用于确定多字节符号的第一个字节是MSB还是LSB。
此代码在任何支持它的文本编辑器中都是不可见的,并且在没有问号的情况下显示为带问号的钻石。
如果您不知道是否已启用BOM,请随意使用十六进制编辑器打开源文件,并检查第一个字符是<?php
还是其他字符。
一个好的文本编辑器将允许您选择编码。 UTF8 without BOM
是一个不错的选择,Notepad++
在我看来是一个很好的编辑。