move_uploaded_file
senor
- php
Hallo
Ich versuche Bilder auf einen Server hoch zu laden. Dies funktionierte eigentlich auch ganz gut, aber heute hab ich feststellen müssen dass ich ein Bild nicht hoch laden kann. Bei dieser Funktion (move_uploaded_file) scheitert der Vorgang.
Ich hab nun einen zum Test zwei Grafiken vom gleichen Typ (jpg) in den gleiche Ordner getan und beide probiert hoch zu laden. Das eine Bild funktionierte wunderbar, das andere nicht. Woran könnte dies liegen?
Hi,
Ich hab nun einen zum Test zwei Grafiken vom gleichen Typ (jpg) in den gleiche Ordner getan und beide probiert hoch zu laden. Das eine Bild funktionierte wunderbar, das andere nicht. Woran könnte dies liegen?
bisschen wenig Anhaltspunkte, da kann man nur raten. Ist das Bild, bei dem der Upload verweigert wird, möglicherweise sehr groß? Wird upload_max_filesize etwa überschritten?
So long,
Martin
nein, das überprüfe ich zuerst.
Das hochladen geht, aber vom Tempordner kann das Bild dann nicht mehr in den Ziel-Ordner verschoben werden.
Hallo,
nein, das überprüfe ich zuerst.
also $_FILES[]['error'] meldet keinen Upload-Fehler?
Das hochladen geht, aber vom Tempordner kann das Bild dann nicht mehr in den Ziel-Ordner verschoben werden.
Die Datei ist aber im TEMP-Verzeichnis vorhanden?
Enthält der Zielname vielleicht ungültige Zeichen oder verweist auf ein nicht existierendes Verzeichnis? Oder auf ein Verzeichnis, in dem du (bzw. der PHP-Prozess) keine Schreibrechte hast?
Ciao,
Martin
also $_FILES[]['error'] meldet keinen Upload-Fehler?
ja, $_FILES[]['error'] meldet keinen Fehler, deshalb denke ich dass es hochzuladen geht, aber ob das Bild nun wirklich temporär hochgeladen wird weiss ich nicht.
Ich schreibe mir kurz vor dem Error die aktuelle Position der Datei raus, und diese besagt /tmp/... was ich aber nicht weiss, ob die Datei nur meint sie sei im Temp, oder ob sie wirklich ist, denn danach kann ich sie im Tmp nicht finden. Wobei auch die Funktionierenden Bilder nicht im Tmp erscheinen.
Hallo
also $_FILES[]['error'] meldet keinen Upload-Fehler?
ja, $_FILES[]['error'] meldet keinen Fehler, deshalb denke ich dass es hochzuladen geht, aber ob das Bild nun wirklich temporär hochgeladen wird weiss ich nicht.
Ich schreibe mir kurz vor dem Error die aktuelle Position der Datei raus, und diese besagt /tmp/... was ich aber nicht weiss, ob die Datei nur meint sie sei im Temp, oder ob sie wirklich ist, denn danach kann ich sie im Tmp nicht finden. Wobei auch die Funktionierenden Bilder nicht im Tmp erscheinen.
Wenn du dir mal durchliesest, wozu dieser Umweg da ist, wüsstest du, dass das Bild in das Verzeichnis /tmp/ hochgeladen wird, nach dem Ende es Skripts aber von dort gelöscht wird. Deshalb findest du es hernach auch in keinem Fall dort.
Schreib mal den folgenden Code an den Anfang des Skripts. Der sorgt dafür, dass du mehr Fehler gemeldet bekommst.
<?php
# zum Testen einschalten
ini_set('display_errors', 1);
error_reporting(E_ALL);
# jetzt kommt der Skriptcode
?>
Wenn es denn, wie Martin als Möglichkeit vorgibt, das nicht-Schreiben-dürfen ist, hat das natürlich mit $_FILES[]["error"]
nichts zu tun und wird auch nicht *dort* als Fehler gemeldet.
Tschö, Auge
Vielen Dank. Hab den Code eingefügt aber keine zusätzlichen Fehlermeldungen bekommen.
Hi,
Vielen Dank. Hab den Code eingefügt aber keine zusätzlichen Fehlermeldungen bekommen.
Und vor dem move_uploaded_file steht auch kein fehlerunterdrückendes @?
MfG ChrisB
Und vor dem move_uploaded_file steht auch kein fehlerunterdrückendes @?
Oh, das wars... nun bekomme ich...
Warning: move_uploaded_file(/xxx/xxx.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in xxx/xxx.php on line 205
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpWcEqOD' to '/xxxx/xxxx.jpg' in /xxx/xxx.php on line 205
xxx.jpg Could not upload file (6).
Nun, diese Fehlermeldung irritiert mich nun ein bisschen, denn die Zugriffsrechte für Ordner und Bild sind uneingeschränkt. Und es muss am Bild liegen weil ich andere Bilder aus dem gleichen Ordner raufladen kann.
Vielen Dank für die Hilfe.
Hallo
Warning: move_uploaded_file(/xxx/xxx.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in xxx/xxx.php on line 205
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpWcEqOD' to '/xxxx/xxxx.jpg' in /xxx/xxx.php on line 205
xxx.jpg Could not upload file (6).
Hat der Martin also recht gehabt.
Nun, diese Fehlermeldung irritiert mich nun ein bisschen, denn die Zugriffsrechte für Ordner und Bild sind uneingeschränkt. Und es muss am Bild liegen weil ich andere Bilder aus dem gleichen Ordner raufladen kann.
Was meinst du mit "weil ich andere Bilder aus dem gleichen Ordner raufladen kann"? Du darfst in dem Verzeichnis "/xxxx/" auf dem Server nichts speichern, weil das die Zugriffsrechte für das Verzeichnis nicht hergeben.
Tschö, Auge
Was meinst du mit "weil ich andere Bilder aus dem gleichen Ordner raufladen kann"? Du darfst in dem Verzeichnis "/xxxx/" auf dem Server nichts speichern, weil das die Zugriffsrechte für das Verzeichnis nicht hergeben.
Alle Bilder werden standardmässig in den gleichen Ordner gespeichert. Ich kann alle Bilder in eben diesen Ordner im Server hoch laden, mit Ausnahme dieses JPG-Bildes...
Hi,
Warning: move_uploaded_file(/xxx/xxx.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in xxx/xxx.php on line 205
Wofür stehen die xxx hier?
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpWcEqOD' to '/xxxx/xxxx.jpg' in /xxx/xxx.php on line 205
xxx.jpg Could not upload file (6).
6 wäre laut Manual UPLOAD_ERR_NO_TMP_DIR, Value: 6; Missing a temporary folder.
Wie ist upload_tmp_dir konfiguriert? Bitte mit ini_get im aktuellen Script überprüfen.
MfG ChrisB
Hello,
also $_FILES[]['error'] meldet keinen Upload-Fehler?
ja, $_FILES[]['error'] meldet keinen Fehler, deshalb denke ich dass es hochzuladen geht, aber ob das Bild nun wirklich temporär hochgeladen wird weiss ich nicht.
Ich schreibe mir kurz vor dem Error die aktuelle Position der Datei raus, und diese besagt /tmp/... was ich aber nicht weiss, ob die Datei nur meint sie sei im Temp, oder ob sie wirklich ist, denn danach kann ich sie im Tmp nicht finden. Wobei auch die Funktionierenden Bilder nicht im Tmp erscheinen.
Das Script erhält erst die Kontrolle, wenn der Upload ins upload_tmp_dir bereits stattgefunden hat.
Prüfe dann anschleßend nach einem Single-Upload:
<?php
header('Content-Type: text/plain');
## hat ein Upload fehlerfrei stattgefunden?
if ($_FILES['$upload_field_name']['error'] === 0)
{
echo "Filename = {$_FILES['$upload_field_name']['tmp_name']} \r\n";
echo "Filesize = {$_FILES['$upload_field_name']['size']} \r\n";
}
flush();
sleep(100);
?>
und schaue mit dem Terminal auf dem Server im upload_tmp_dir (ini-File beachten) nach, ob dort eine Datei mit dem Namen vorhanden ist.
http://de.php.net/manual/en/features.file-upload.php
http://de.php.net/manual/en/features.file-upload.post-method.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg