Darstellungsproblem nach upload von Bildern

Wir verwenden die PHP Funktion move_uploaded_file() um Bilder aus einem Formular hochzuladen.
Der Upload funktioniert gut, nur leider werden JPGs farbverfälscht wiedergegeben und Bildteile werden falsch angeordnet dargestellt.
Es findet keine scriptmässige Bildverarbeitung statt.
Werden mehrere Bilder hochgeladen, ist das erste Bild beschädigt, aber die restlichen Bilder werden einwandfrei hochgeladen.
Wir verwenden PHP 5.3 und das Script lief auf der alten Version 5.2 einwandfrei.
Hat jemand eine Idee, wodurch die Bilder beschädigt werden und vor allem wie man das beheben kann?

Gruß Lars

Wir verwenden die PHP Funktion move_uploaded_file() um Bilder
aus einem Formular hochzuladen.
Der Upload funktioniert gut, nur leider werden JPGs
farbverfälscht wiedergegeben und Bildteile werden falsch
angeordnet dargestellt.

wie wird denn auf die bilder zugegriffen, was passiert nach move_uploaded_file?

Dieses Script illustriert den Fehler
Auf einem anderen Server, welcher auch PHP5.3 benutzt läuft es tadelos mit dem einzigen Unterschied, dass auf dem ‚Fehler‘ Server (Ubuntu) das PHP Modul als fastcgi lauft.
Könnte das vieelicht eine Ursache sein

Filename:

<?php print_r($_POST);
if(isset($\_POST)){ $go=$\_POST["go"]; echo($go); if($go=="Hochladen"){ $target = $\_SERVER['DOCUMENT\_ROOT']."/xxx/ext/gd/beispiel.jpg"; move\_uploaded\_file($\_FILES["bild"]["tmp\_name"],$target); echo(' ![](./beispiel.jpg)'); } } phpinfo(); ?\>

Hallo

Lad doch mal eine Textdatei hoch und schau nach, was genau da kaputtgeht.
Hier gibts Textdateien in verschiedenen Größen: http://www.justpain.com/ut_maps/wordlists/

Gruß, sigterm

Dieses Script illustriert den Fehler

$target =
$_SERVER[‚DOCUMENT_ROOT‘]."/xxx/ext/gd/beispiel.jpg";
move_uploaded_file($_FILES[„bild“][„tmp_name“],$target);
echo(’’);

ok, du schaust es im browser an.
und /ext/gd/ ist auch kein hotfolder od.ä.?

Der Upload funktioniert gut, nur leider werden JPGs
farbverfälscht wiedergegeben und Bildteile werden falsch
angeordnet dargestellt.

farbverflaescht deutet meist darauf hin, dass jpeg mit cmyk farbmodell oder farbprofilen etc. angezeigt werden.

tritt der fehler auch mit anderen jpeg - z.b. aus den windows beispielbildern.
tritt der fehler auch in anderen browsern auf?

ist es auch kaputt, wenn du es
a) direkt von der festplatte im browser anzeigst,
b) runterlaedst, speicherst und im browser anzeigst,

Auf einem anderen Server, welcher auch PHP5.3 benutzt läuft es
tadelos mit dem einzigen Unterschied, dass auf dem ‚Fehler‘
Server (Ubuntu) das PHP Modul als fastcgi lauft.
Könnte das vieelicht eine Ursache sein

sollte nix machen.
hast du mit wireshark, livehttp-headers etc. die http-header angeschaut? dazu das bild in einem eigenen fenster anzeigen.

farbverflaescht deutet meist darauf hin, dass jpeg mit cmyk
farbmodell oder farbprofilen etc. angezeigt werden.

tritt der fehler auch mit anderen jpeg - z.b. aus den windows
beispielbildern.
tritt der fehler auch in anderen browsern auf?

Der Fehler tritt bei einigen Bilder nicht auf. Je mehr Farben das Bild enthält, desto schlechter die Darstellung.
Der Fehler ist browserunabhängig

ist es auch kaputt, wenn du es
a) direkt von der festplatte im browser anzeigst,
b) runterlaedst, speicherst und im browser anzeigst,

Ja…

Auf einem anderen Server, welcher auch PHP5.3 benutzt läuft es
tadelos mit dem einzigen Unterschied, dass auf dem ‚Fehler‘
Server (Ubuntu) das PHP Modul als fastcgi lauft.
Könnte das vieelicht eine Ursache sein

sollte nix machen.
hast du mit wireshark, livehttp-headers etc. die http-header
angeschaut? dazu das bild in einem eigenen fenster anzeigen.

Habe das Addon livehttp.
Worauf soll ich denn da achten?

Wir haben mal andere Datentypen hochgeladen:
txt okay
doc okay
gif zerschossen, Bild wird nur halbangezeigt
pdf werden angezeigt, Warnhinweis: Kann eingebette Schriften nicht entnehmen. Orginale werden ohne Fehler angezeigt.
Das heisst die Ursache des Fehlers muss beim Hochladeprozess auftreten.
Bei JPEGS und GIFS ist der Fehler einfach nur offensichtlicher.

Hallo

Wir haben mal andere Datentypen hochgeladen:
txt okay
doc okay

Hast du mal mit einem Tool wie diff überprüft, ob die Dateien wirklich unverändert sind?

sigterm

hast du mit wireshark, livehttp-headers etc. die http-header
angeschaut? dazu das bild in einem eigenen fenster anzeigen.

Habe das Addon livehttp.
Worauf soll ich denn da achten?

darauf, ob die header beim runterladen genau die selben sind wie auf dem alten server, dass encodings und mimetypes stimmen.

Wir haben mal andere Datentypen hochgeladen:
txt okay
doc okay
gif zerschossen, Bild wird nur halbangezeigt
pdf werden angezeigt, Warnhinweis: Kann eingebette Schriften
nicht entnehmen. Orginale werden ohne Fehler angezeigt.
Das heisst die Ursache des Fehlers muss beim Hochladeprozess
auftreten.
Bei JPEGS und GIFS ist der Fehler einfach nur
offensichtlicher.

du solltest die uploads mit ftp runterladen, um einzuschraenken, ob die dateien beim upload oder beim download kaputt gehen.

weiter wie von sigterm vorgeschlagen mit diff pruefen, ob z.b. bestimtme zeichen kaputt sind.

fehlerurssachen koennten z.b. sein: input filter, probleme mit encodings beim upload/download

Problem gelöst…
Der Fehler lag in an einem fehlenden Parameter im Apache Module
mod_fcgi. Unser Netzwerker hat in der einem zusätlichen Parameter die Speicherzuweisung geändert.
Die PHP Funktion move_uploaded_file war auszuschliessen, da schon das temporäre Bild im $_FILES Array schon zerschossen war.
Also musste der Fehler beim eigentlichen Upload Prozess passieren.
Daher war ja auch meine obige Vermutung, das es am fcgi liegen muss.

Jetzt werden die Bilder korrekt hochgeladen.
Ich danke Jörg und sigterm für eure Anteilnahme…