php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
FPDF Steh voll auf dem Schlauch


 
thommy1972de
26-05-2016, 17:22 
 
Hab mal wieder seit 7 Stunden ein tolles Probem.
Ich erzeuge PDF Dateien mit FPDF.
Ich habe mehrere PDF Dateien die diese erzeugen. Rechnungen, Angebote und auch Aufträge.
Rechnungen und Angebote gehen wunderbar nur Aufträge will er mir nicht aufmachen. Habe den Code schon von Rechnungen kopiert, alles rausgenommen und nur eine PDF Datei erzeugen wollen - nix. Ich werd bald Wahnsinnig mit dem Mist... Nun zum eigentlichen Teil...
Folgender Code ist in der PHP Datei die aufgerufen wird:

<?
ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
require('fpdf/fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
ob_end_flush();
?>


Diese Seite wir mit einer normalen <a href= .. Anweisung in einem neuen Fenster geöffnet und soll einfach eine PDF Datei erzeugen....
Macht es aber nicht..
Die fpdf.php ist vorhanden ( sonst würde da ein Fehler stehen )
Ich bekomme aber seit Stunden nur:
Fatal error: Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file' in /var/www/k103238web/htdocs/www.zwpc.de/admin/fpdf/fpdf.php:271 Stack trace: #0 /var/www/k103238web/htdocs/www.zwpc.de/admin/fpdf/fpdf.php(1063): FPDF->Error('Some data has a...') #1 /var/www/k103238web/htdocs/www.zwpc.de/admin/fpdf/fpdf.php(999): FPDF->_checkoutput() #2 /var/www/k103238web/htdocs/www.zwpc.de/admin/seiten/auf_pdf.php(9): FPDF->Output() #3 /var/www/k103238web/htdocs/www.zwpc.de/admin/index.php(90): include('/var/www/k10323...') #4 {main} thrown in /var/www/k103238web/htdocs/www.zwpc.de/admin/fpdf/fpdf.php on line 271


Bitte, bitte - kann mir jemand auf die Sprünge helfen ??
P.S. Ja ich habe nach dem Fehler gegoogled !

 
mermshaus
26-05-2016, 17:36 
 
Guck mal, ob deine Quellcodedatei eine Byte-Order-Mark enthält. (Im Zweifel mit einem Hexeditor.)

- https://de.wikipedia.org/wiki/Byte_Order_Mark

Falls ja, muss die raus. (In der Regel eine Editor-Einstellung.)

 
thommy1972de
26-05-2016, 17:43 
 
Negativ
Notepad++ ->Kodierung->UTF8 ohne BOM
Habe auch schon gelöscht und neu angelegt...
Komisch das alle anderen gehen nur diese eine nicht...

 
mermshaus
26-05-2016, 17:48 
 
Dann guck mal, ob in der Ausgabe vor der Fehlermeldung was steht.

Vielleicht reicht es dazu schon, die $pdf->Output();-Zeile auszukommentieren.

Ansonsten würde ich die Rückgabe als Datei speichern und im Zweifel mit einem Hexeditor betrachten, falls nichts Offensichtliches zu sehen ist.

 
thommy1972de
26-05-2016, 17:54 
 
<b>Fatal error</b>: Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file' in /var/www/k103238web/htdocs/xxxxx/fpdf/fpdf.php:271
Stack trace:
#0 /var/www/k103238web/xxxxx/fpdf/fpdf.php(1063): FPDF-&gt;Error('Some data has a...')
#1 /var/www/k103238web/xxxxx/fpdf/fpdf.php(999): FPDF-&gt;_checkoutput()
#2 /var/www/k103238web/xxxxx/seiten/auf_pdf.php(7): FPDF-&gt;Output()
#3 /var/www/k103238web/xxxxx/index.php(90): include('/var/www/k10323...')
#4 {main}
thrown in <b>/var/www/k103238web/xxxxx/fpdf/fpdf.php</b> on line <b>271</b><br />

Wie soll er denn ohne Output() die PDF ausgeben ?

 
h3ll
26-05-2016, 18:19 
 
Wie soll er denn ohne Output() die PDF ausgeben ?

Gar nicht. Aber wie willst du sonst rausfinden, ob nicht was anderes ausgegeben wird?

 
thommy1972de
26-05-2016, 18:21 
 
Das ist ja das hüpfende Komma. Ohne Output() wird garnichts ausgegeben. Mit wenigstens noch eine Fehlermeldung ^^
Ich werde das ganze wohl in einem Popup mit PHP aufmachen und mit einem PDF Drucker ausdrucken. Langsam nervt mich der Mist...
Trotzdem Danke.

 
h3ll
26-05-2016, 18:34 
 
Das ist ja das hüpfende Komma. Ohne Output() wird garnichts ausgegeben.

Sicher? Wie hast du das festgestellt? Ist die Ausgabe 0 Byte groß?

 
thommy1972de
26-05-2016, 18:50 
 
Langsam glaube ich es liegt eher an fpdf.php als an mir..
Wenn ich die Datei xxx.php direkt aufrufe erhalte ich den Fehler 500.
Mache ich eine echo davor:
<?
echo "fest";
require'fpdf/fpdf.php';
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output('I');
?>
gibt er mir "fest" aus...

 
h3ll
26-05-2016, 18:54 
 
Bitte beantworte meine Frage.

Und das schließende PHP-Tag am Ende (?>) solltest du übrigens immer weg lassen.

 
thommy1972de
26-05-2016, 19:28 
 
Nein die Datei ist natürlich nicht 0 Byte gross...

 
h3ll
26-05-2016, 19:34 
 
Nein die Datei ist natürlich nicht 0 Byte gross...

Was heißt "die Datei"? Ich rede von der Ausgabe, die der Browser erhält. Diese muss 0 Byte groß sein, ansonsten gibst du irgendwo etwas aus, das da nicht hingehört.

 
thommy1972de
26-05-2016, 19:46 
 
Es steht nichts da. Auch im Quelltext nichts (ausser die 1 oben links)

 
h3ll
26-05-2016, 19:49 
 
Nur weil du nichts siehst, heißt das nicht, das nichts da ist.

Die Ausgabe sollte 0 Byte groß sein.

Wenn ich testweise einen UTF-8 BOM ausgebe, erhalte ich folgendes:
http://666kb.com/i/d99trormo60z1zdcw.png
Hier der Testcode dazu:

<?php

echo "\xEF\xBB\xBF";

 
thommy1972de
26-05-2016, 20:01 
 
http://www.zwpc.de/002_01.jpg

Ohne alles ist sie 0 und 0 Byte
Die beiden anderen Dateien binde ich exakt genauso ein und die ja gehen... Nur die eine nicht...

 
h3ll
26-05-2016, 20:08 
 
Ersetze mal $pdf->Output() mit:

if (!headers_sent($filename, $linenum)) {
$pdf->Output();
} else {
echo "Headers already sent in $filename on line $linenum";
}Und zeig bitte die Ausgabe davon.

 
thommy1972de
26-05-2016, 20:11 
 
require'fpdf/fpdf.php';
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
if (!headers_sent($filename, $linenum)) {
$pdf->Output('I');
} else {
echo "Headers already sent in $filename on line $linenum";
}

ergibt HTTP ERROR 500

 
h3ll
26-05-2016, 20:18 
 
500 -> Fehler am Server -> Fehlermeldung findest du im Error-Log am Server

Aber ich tippe auf einen Syntaxfehler, weil du nach require das Leerzeichen vergessen hast.

 
thommy1972de
26-05-2016, 20:49 
 
Die letzte Meldung was am 3.Mai
[Tue May 03 15:28:45.576834 2016] [autoindex:error] [pid 4968:tid 139988444325632] [client 95.89.46.146:42516] AH01276: Cannot serve directory /var/www/k103238web/htdocs/www.zwpc.de/web/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

Dann habe ich noch eine priv/php_error.log
[26-May-2016 19:42:05 Europe/Berlin] PHP Warning: Module 'sqlite3' already loaded in Unknown on line 0
[26-May-2016 19:42:05 Europe/Berlin] PHP Warning: Module 'tidy' already loaded in Unknown on line 0
[26-May-2016 19:42:05 Europe/Berlin] PHP Warning: Module 'xmlrpc' already loaded in Unknown on line 0
hat aber glaube weniger mit mir zu tun und eine access.log die hat aber ganz sicher nichts damit zu tun.

require 'fpdf/fpdf.php';
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
if (!headers_sent($filename, $linenum)) {
$pdf->Output('I');
} else {
echo "Headers already sent in $filename on line $linenum";
}
geht auch mit Leerzeichen nicht

 
h3ll
26-05-2016, 21:14 
 
Schau mal mit phpinfo() wohin PHP loggt. Wenn das auch nix ergibt, sprich mit dem Serverbetreiber.

 
thommy1972de
26-05-2016, 21:17 
 
Ich glaube mein Server ist eh gerade abgeschmiert wodurch sich meine Problematik zumindest für heute Abend wohl erledigt hat.
Ich denke ich fange morgen nochmal ganz von vorne an. Wollte eh noch alles in Funktionen umschreiben und es waren auch erst 20 oder 30 Dateien.
Vielen Dank trotzdem für die Hilfe.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:40 Uhr.