Php FPDF错误:一些数据已经输出,can';t在WebHost上发送PDF文件

Php FPDF错误:一些数据已经输出,can';t在WebHost上发送PDF文件,php,fpdf,Php,Fpdf,我正在使用FPDF类在我的网站上生成pdf。直到最近几周我开始出错,一切都很顺利: FPDF error: Some data has already been output, can't send PDF file 在过去的几周里,我的代码没有任何变化,我还检查了fpdf的任何输出执行情况(包括php之前不必要的空间、禁用的BOM签名等) 我在000webhost.com上有我的网站,所以我也禁用了页面末尾的分析代码,但是pdf仍然不起作用。我留下的唯一痕迹是源代码中的misterious

我正在使用FPDF类在我的网站上生成pdf。直到最近几周我开始出错,一切都很顺利:

FPDF error: Some data has already been output, can't send PDF file
在过去的几周里,我的代码没有任何变化,我还检查了fpdf的任何输出执行情况(包括php之前不必要的空间、禁用的BOM签名等)

我在000webhost.com上有我的网站,所以我也禁用了页面末尾的分析代码,但是pdf仍然不起作用。我留下的唯一痕迹是源代码中的misterious“”(我在Chrome浏览器中检查源代码时可以看到它)

即使是这个简单的例子,我也无法工作:

<?php
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage()
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>


有没有办法通过php禁用网页上的任何其他输出?还是有人在000webhost上使用fpdf?

我认为
session.auto\u start
设置为1。这将启动会话并向浏览器发送
PHPSESSID
cookie

您可以尝试使用以下代码禁用它:

<?php
ini_set("session.auto_start", 0);
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage()
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>
只需插入ob_end_clean();在输出之前

<?php
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage()
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
ob_end_clean();
$pdf->Output();
?>

在我的情况下,我设置了:

ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
当我请求生成报告时,浏览器中显示了一些警告(如使用不推荐的函数)。
关闭
显示错误
选项,报告生成成功。

使用如下行:

require('fpdf.php');    ob_end_clean();    header("Content-Encoding: None", true);

问题将得到解决;)

如果在该浏览器页面上呈现其他内容后尝试生成PDF,则会发生此错误,例如,如果您执行了以下操作:

require('fpdf.php');    ob_end_clean();    header("Content-Encoding: None", true);
echo美元价值

FPDF代码需要一个“空白画布”来呈现它的输出(或者,有人猜测,是一个空白iframe,尽管我还没有测试过)

错误:某些数据已输出,无法发送PDF文件


我在beggining(ob_clean)中使用此选项是为了解决此问题,它不会改变PDF结构:

require('fpdf/fpdf.php');
ob_clean();

当然,在脚本中设置它会太迟吗?如果这是问题所在,则需要在php.INI中完成。虽然这可能是问题所在,但它并没有解释
”的输出。确实如此,但手册声称这是一个php\u INI\u ALL(条目可以在任何地方设置),因此它应该可以工作,如果它不工作,手册对此设置
ob\u end\u flush()是不正确的;ob_end_clean()为我工作,是的,他们两个!fpdf.php是来自www.fpdf.org的标准类文件,没有弄乱它。在这种情况下,
意味着您的主机正在做一些愚蠢的事情。我想换一台更好的主机。我正在测试XAMPP的
CD收藏
示例应用程序。这很有效,谢谢。我可以用变量替换字符串“Hello World”吗。我有很多字符串要添加到那里。
ob_end_flush();ob_end_clean()为我工作,是的,他们两个!我的年度最佳答案
require('fpdf/fpdf.php');
ob_clean();