• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

PHP Bilddatei Upload

ThisIsBeat

Empire
Registriert
02.02.16
Beiträge
85
Hallo Community,

ich habe im Internet ein Datei Upload Script gefunden und wollte das ganze mal ausprobieren doch es kommt leider immer wieder in einer Zeile zu einem Fehler, obwohl ich das ganze Script nur kopiert habe und nicht mal was daran verändert habe.

Hier das Script:
Code:
<?php
$upload_folder = 'upload/'; //Das Upload-Verzeichnis
$filename = pathinfo($_FILES['datei']['name'], PATHINFO_FILENAME);
$extension = strtolower(pathinfo($_FILES['datei']['name'], PATHINFO_EXTENSION));
 
 
//Überprüfung der Dateiendung
$allowed_extensions = array('png', 'jpg', 'jpeg', 'gif');
if(!in_array($extension, $allowed_extensions)) {
    die("Ungültige Dateiendung. Nur png, jpg, jpeg und gif-Dateien sind erlaubt");
}
 
//Überprüfung der Dateigröße
$max_size = 500*1024; //500 KB
if($_FILES['datei']['size'] > $max_size) {
    die("Bitte keine Dateien größer 500kb hochladen");
}
 
//Überprüfung dass das Bild keine Fehler enthält
if(function_exists('exif_imagetype')) { //Die exif_imagetype-Funktion erfordert die exif-Erweiterung auf dem Server
    $allowed_types = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
    $detected_type = exif_imagetype($_FILES['datei']['tmp_name']);
    if(!in_array($detected_type, $allowed_types)) {
        die("Nur der Upload von Bilddateien ist gestattet");
    }
}
 
//Pfad zum Upload
$new_path = $upload_folder.$filename.'.'.$extension;
 
//Neuer Dateiname falls die Datei bereits existiert
if(file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen
    $id = 1;
    do {
        $new_path = $upload_folder.$filename.'_'.$id.'.'.$extension;
        $id++;
    } while(file_exists($new_path));
}
 
//Alles okay, verschiebe Datei an neuen Pfad
move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);
echo 'Bild erfolgreich hochgeladen: <a href="'.$new_path.'">'.$new_path.'</a>';
?>

Das Formular zum Upload lasse ich jetzt einfach mal weg weil das auch eine externe Datei ist und glaube ich nicht wirklich ne Rolle spielt bei meinem Problem. Nun ja es wird wie gesagt immer der selbe Fehler ausgespuckt und zwar dieser hier:

Warning: move_uploaded_file(upload/arno1.jpg): failed to open stream: No such file or directory in /Library/WebServer/Documents/upload.php on line 41

Warning: move_uploaded_file(): Unable to move '/private/var/tmp/phpZOIFzd' to 'upload/arno1.jpg' in /Library/WebServer/Documents/upload.php on line 41
Bild erfolgreich hochgeladen: upload/arno1.jpg

Ich verstehe den Fehler nicht und weiß leider nicht warum das ganze nicht so funktioniert wie ich mir das vorstelle :/
Wäre super wenn einer von euch ne Ahnung hat und mir erklären könnte was hier schief läuft und wie ich das Problem löse :)
 

ThisIsBeat

Empire
Registriert
02.02.16
Beiträge
85
Das ist übrigens Zeile 41:
move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);
 

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
Ist denn der Ordner "upload" im Verzeichnis "/Library/WebServer/Documents/" vorhanden? Und hat dieser auch die benötigten Schreibrechte?
 

ThisIsBeat

Empire
Registriert
02.02.16
Beiträge
85
@timmy38233 der Ordner hat vorher noch nicht existiert aber das habe ich korrigiert und nun ist er auch im Verzeichnis aufzufinden doch es funktioniert immer noch nicht. Muss ich dem Ordner extra Schreibrechte geben ?
 

ThisIsBeat

Empire
Registriert
02.02.16
Beiträge
85
@timmy38233 Ich glaube du hast recht was die Schreibrechte angeht, doch hast du ne Ahnung wie ich das auf dem Mac anstelle ? Angeblich muss ich dem Ordner Schreibrechte CHMOD 777 geben