12 Stimmen

move_uploaded_file Fehler

Kann mir jemand helfen, zu verstehen, warum das Ergebnis falsch ist?

if ((move_uploaded_file($_FILES[$field]['tmp_name'], $path))) {

Das heißt, mögliche Ursachen. Ich habe geprüft, ob die Variablen korrekt sind, und ich habe die Berechtigungen für den Zielordner überprüft, die 777 betragen.

Zum Wohl!

Für diejenigen, die var_dump ($_FILES) sehen wollen;

array(1) { ["image"]=>  array(5) { ["name"]=>  string(14) "accountile.png" 
["type"]=>  string(9) "image/png" ["tmp_name"]=>  string(14) "/tmp/php28IQhv" 
["error"]=>  int(0) ["size"]=>  int(394) } }

26voto

Your Common Sense Punkte 154708

Ich habe die Variablen überprüft

Prüfen Sie keine Variablen, sondern Fehlermeldungen überprüfen.
Das ist das Einzige, was Sie brauchen.
Fügen Sie diese Zeilen am Anfang Ihres Codes ein

ini_set('display_errors',1);
error_reporting(E_ALL);

und sehen Sie, was dort steht.
Wenn move_uploaded_file fehlgeschlagen ist, wird es immer einen Fehler auslösen mit ausführliche Erklärung .
Sie werden es nicht glauben, aber das Lesen von Fehlermeldungen ist viel effizienter, um ein Problem zu finden, als Vermutungen Sie haben es schon einmal versucht

Ich kann nicht glauben, dass das noch niemand erwähnt hat.

1voto

Ben Punkte 58046

Mit move_uploaded_file benötigen Sie keine 777-Berechtigungen. Was ist die Ausgabe von $path ? Haben Sie überprüft, dass $path existiert? Haben Sie überprüft, dass $field existiert?

Entweder existieren $field oder $path nicht, oder open_basedir ist in Kraft, ist meine Vermutung.

Ist open_basedir Einschränkung aktiviert? Das könnte verhindern, dass der Zielort der hochgeladenen Datei beschrieben wird. Suchen Sie in Ihrer php.ini nach open_basedir Wenn ein Pfad angegeben ist, ist die Funktion aktiviert, und Sie möchten sehen, ob der Zielpfad Ihrer hochgeladenen Datei innerhalb dieses Pfades liegt. Wenn ja, ist das der Grund, warum es fehlschlägt.

Update

$path kann keine URL sein, es muss ein lokaler Pfad sein, wie z.B. /home/user/public_html/

1voto

Loïc Février Punkte 7212

Verwenden Sie nicht

$path = "http://www.barbadostravelbuddy.co.uk/demo/images/carhire
    /accountile10420103260403000000pm.png"

sondern

$path = "/home/sites/barbadostravelbuddy.co.uk/public_html/demo/images/carhire/
    accountile10420103260403000000pm.png"

Es muss sich um einen Pfad im System handeln, nicht um eine URL.

1voto

tim Punkte 960

Haben Sie Ihre php.ini bearbeitet, um sicherzustellen, dass upload_tmp_dir auf ein temporäres Verzeichnis verweist?

1voto

Robert Sinclair Punkte 3608

Prüfen:

enctype="multipart/form-data"

Innerhalb des Formulars selbst, ohne es Dateiupload wird nicht funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X