2012-04-02 4 views
1

ich PHP 5.2 auf Ubuntu mit Apache laufen 2.PNG-Datei ist ungültig Fehler beim Weg von der DB zu lesen, funktioniert aber, wenn der Pfad hartcodiert ist

Wenn ich eine PNG-Datei von PHP-Datei dienen soll, die fest einprogrammiert ist (mit $imgname), kann ich erfolgreich sein. Wenn ich jedoch die $imgname zu $imgdbname ändere, schlägt der Browser fehl und sagt, dass es keine gültige PNG-Datei ist.

$imgname = "cachepics/c3s9taopkp.png"; 
$imgdbname = readfromdb(); 

header("Content-type: image/png"); 
print file_get_contents($imgname); 

Allerdings, wenn ich die header("Content-type: image/png"); Linie kommentieren, Browser zeigt alle PNG-Müll Text in beiden Fällen. Daher bin ich mir sicher, dass die PHP-Instanz diese Datei erreichen kann, indem sie den Pfad von DB liest.

Der Ausgang von

print "-".$imgname."-".$imgdbname."-"; 

scheint genau das gleiche.

-cachepics/c3s9taopkp.png-cachepics/c3s9taopkp.png- 

Ich werde verrückt und weiß nicht, warum die DB-Version nicht funktioniert.

+1

Wie sieht die Funktion 'readfromdb' aus? Gibt es die Zeichenfolge zurück oder echo es? – Travesty3

+0

Es liest die Datenbank und gibt den Pfad zurück. $ imgdbname = $ imgname = cachepics/c3s9taopkp.png – noway

+0

Wenn die gleiche exakte Zeichenkette sowohl in $ imgname als auch in $ imgdbname gespeichert ist, sollte es funktionieren. Versuchen Sie etwas wie 'var_dump ($ imgname); var_dump ($ imgdbname); 'um zu überprüfen, dass sie genau gleich sind. – Travesty3

Antwort

2

Vielleicht ist das Problem, dass readfromdb Fehler haben und Warnungen generieren, diese Warnung an STDIO ausgeben, Müll zum resultierenden Bild hinzufügen oder jeden späteren Header abbrechen (wie content-type). Sie könnten wahrscheinlich das Server Fehlerprotokoll dafür überprüfen (jede Warnung der Stil 'Kopfzeile kann nicht hinzugefügt werden, weil bereits in Datei gedruckt ..'), oder testen, ob beide resultierenden Dateien die gleiche Größe haben.

0

Ich weiß nicht den Grund, warum Sie dieses Problem bekommen, aber bitte readfile verwenden, um den Inhalt einer Datei in PHP direkt auszugeben.