FPDFクラスを使用してWebサイトでPDFを生成しています。エラーが発生し始めた最後の数週間まで、すべてがうまく機能しました。
FPDF error: Some data has already been output, can't send PDF file
過去数週間、コードに何も変更がなく、fpdfを実行する出力(phpの前の不要なスペース、無効なBOM署名などを含む)も確認しました。
私のウェブサイトは000webhost.comにあるので、ページの最後にある分析コードも無効にしましたが、PDFはまだ機能しません。私が残した唯一の痕跡は、ソースコード内の不思議な ""です(Chromeブラウザ)でソースコードをチェックすると、それを見ることができます)。
この単純な例でも仕事に取り掛かることができません。
<?php
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage()
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>
PHPによってWebページ上の他の出力を無効にする方法はありますか?または誰かが000webhostでfpdfを使用していますか?
session.auto_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();
?>
設定する場合session.auto_start
to 0が機能しない場合は、次のことを試してください。
<?php
ob_start();
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage()
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
ob_end_flush();
?>
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();
?>
このエラーは、ブラウザページで他の何かを既にレンダリングした後でPDFを生成しようとした場合、たとえば、次のようなことをした場合に発生します。
エコー$値;
FPDFコードでは、出力をレンダリングするための「空白のキャンバス」が必要です(または、まだテストしていませんが、空白のiframeが必要です)。
次のような行を使用します。
require('fpdf.php'); ob_end_clean(); header("Content-Encoding: None", true);
問題は解決します;)
私の場合、私は設定しました:
ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
レポートの生成をリクエストすると、ブラウザにいくつかの警告が表示されました(非推奨の関数の使用など)。off
を回すdisplay_errors
オプション、レポートは正常に生成されました。
私は最初にこの問題を修正するためにこれを置きました(ob_clean)は変更されませんPDF構造:
require('fpdf/fpdf.php');
ob_clean();
SELECT motivo,
unidad_trans,
km_inicial,
km_final,
rut_chofer,
To_char(hora_inicial, 'DD/MM/YYYY HH:mm'),
To_char(hora_final, 'DD/MM/YYYY HH:mm'),
total_recorrido,
destino,
cod_combustible,
cantidad_litros,
cod_vehiculo,
d.cod_estableci
FROM mov_bitacora b,
mov_chofer c,
nuc_dependencias d,
mov_combustible co,
mov_vehiculo v
WHERE b.unidad_tran = d.cod_estableci
AND b.rut_chofer = c.rut_chofer
AND b.cod_combustible = co.cod_combustible
AND b.cod_vehiculo = v.cod_vehiculo
AND id_bitacora = 6fpdf
エラー:一部のデータはすでに出力されています。PDFファイルを送信できません。