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) } }

0voto

Pekka Punkte 429407

Grundlegende Schritte zur Fehlersuche:

  • Was bedeutet eine print_r($_FILES) aussehen?
  • Ist die Quelldatei tatsächlich vorhanden?
  • Ist das "Fehler"-Flag des Datei-Uploads Null (wird bei der Ausführung von print_r sichtbar)
  • Was bedeutet das Ziel $path aussehen?
  • Geben Sie im Zielpfad einen vollständigen Dateinamen an?

Meine Vermutung ist, dass $path ist nur ein Pfad zu einem Ordner, nicht zu einem vollständigen Dateinamen.

Aktualisierung: Sie müssen eine Dateisystempfad als $Pfad.

0voto

ITroubs Punkte 10696

Haben Sie die Berechtigung für den temporären Upload-Ordner überprüft?

Was sagt Ihnen php, wenn Sie das tun:

var_dump($_FILES);

0voto

Boris Punkte 9

Loïc Février, vielen Dank, Sie haben mir viel Zeit erspart!

Hier ist mein Teil... Drucken möglicher Fehler beim Hochladen.

Erstellen Sie zunächst das Verzeichnis Uploader/UploadedFiles Dann den folgenden Code verwenden...

$destination=$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/" . $_FILES["file"]["name"];

if(move_uploaded_file($_FILES["file"]["tmp_name"],  $destination)){
   echo ("Stored in".$_SERVER[DOCUMENT_ROOT]."/Uploader/UploadedFiles/".$_FILES["file"]["name"]);
}else{
   $html_body = '<h1>File upload error!</h1>';
   switch ($_FILES[0]['error']) {
   case 1:
      $html_body .= 'The file is bigger than this PHP installation allows';
      break;
   case 2:
      $html_body .= 'The file is bigger than this form allows';
      break;
   case 3:
      $html_body .= 'Only part of the file was uploaded';
      break;
   case 4:
      $html_body .= 'No file was uploaded';
      break;
   default:
      $html_body .= 'unknown errror';
   } 
   echo ($html_body);
}

0voto

A user Punkte 1

$path muss ein Dateiname und nicht ein Pfad zu einem Verzeichnis sein.

0voto

francovici Punkte 446

Ich stand vor dem gleichen Problem.

Wenn Ihr Fehler sagt "Stream kann nicht geöffnet werden: Erlaubnis verweigert" bedeutet dies, dass die PHP-Server ist nicht in der Lage, die neue Datei in Ihrem Zielverzeichnis zu erstellen.

Sobald Sie die Linux-Berechtigungen für das Verzeichnis gesetzt haben (was sich so anhört, als hätten Sie das Verzeichnis auf 777 gesetzt), sollten Sie dem PHP-Server diese spezielle Berechtigung erteilen.

Wenn Ihr Ordner "uploads" heißt, sollten Sie in das vorherige Verzeichnis wechseln und den nächsten Befehl verwenden:

chcon -R -t httpd_sys_rw_content_t uploads

Das hat mein Problem definitiv gelöst.

Ich hoffe, es hilft.

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