Frage von HowKnow, 27

Weiß jemand wie man diesen Fehler bim Upload einer Datei mit PHP behebt?

if(isset($_POST['submit_bild'])){
    include_once("verbindung_db.php");
    $filetmp = $_FILES['file_img']['tmp_name'];
    $filename = $_FILES['file_img']['name'];
    $filetype = $_FILES['file_img']['type'];
    $filesize = $_FILES['file_img']['size'];
    $filepath = '/IMG/Uploads/'.$filename;
    $bild_name = $_POST['bild_titel'];   
    $album = $_POST['album_select'];  
                        
        if(($filename == "") or ($bild_name == "")) {
            echo('Angaben unvollständig.');    
                } elseif ($filesize > 1572864){ 
                    echo('Datei zu groß. (max. 1,5 MB)');
                    } else {                              
                        move_uploaded_file($filetmp,$filepath);                              
                        $sql = "INSERT into bilder (image_name, 
                                image_path, image_type, album)
                                VALUES ('$filename', '$filepath', 
                                        '$filetype', '$album')";
                        $ausgabe = mysqli_query($verbindung, $sql);
                        echo('Erfolgreich hochgeladen.'); 
                    } 

}

Das ist der Code mit dem ich versuche ein Bild hochzuladen. Ausgegeben wird dann ständig dieses hier:

Warning: move_uploaded_file(/IMG/Uploads/IMG_0156.JPG): failed to open stream: No such file or directory Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\phpDBF.tmp' to '/IMG/Uploads/IMG_0156.JPG'

Hat jemand einen Schubs in die Richtige Richtung für mich?

Antwort
von BlogLesen, 15

Dein Pfad ist ganz einfach falsch, wie Dir die Fehlermeldung auch sagt "No such file or directory".
Prüfe noch mal die existens deines

$filepath

und dabei dürfte Dir auffallen das dieser nicht stimmt. Ausschlaggebend ist der Ort wo die aufgerufene Datei liegt (includes zählen nicht). Achte auch auf Groß- und Kleinschreibung.

Antwort
von HowKnow, 24

Es hat letztendlich mit dieser Lösung funktioniert: 

define ('SITE_ROOT', realpath(dirname(__FILE__)));                            move_uploaded_file($_FILES['file_img']['tmp_name'], SITE_ROOT.'/Uploads/'. $filename);
Kommentar von maximilianus7 ,

und zwar weil: du hast mit /img/... einen absoluten pfad angegeben, in unix ist / das root verzeichnis. das deine website bei einem provider != du gehostet ist, dürftest du keinesfalls zugriffsrechte auf /img haben, welches wohl auch nicht existiert. du meintest ein unterverzeichnis deines privaten "root"s. also einfach img/... (ohne / vorneweg) 

der trick mit dem define site_root ist mir jedenfalls neu, im php manual jedenfalls nicht zu finden. nun gut.

Antwort
von Naajed, 27

Also nach dem Code würde ich sagen , dass nicht der Bild Code fehlerhaft ist , sondern die Website wo Du das hochladen willst . 

Kommentar von Naajed ,

Oh uns sehe gerade , dass das Bild zu groß ist , es darf maximal 1,5mb betragen .

Kommentar von maximilianus7 ,

@Naajed: woran siehst du das?

Kommentar von HowKnow ,

Meinst du das kann mit dem Safemode des Servers zusammenhängen, auf den das Bild geladen wird? Aber dann hätte irgendwas mit einer "Permission"- Warnung ausgegeben werden müssen...

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten