• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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