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(' ');
}
}
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…