Dateien mittels Form und PHP hochladen klappt nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi,

    ich möchte Dateien über den Browser auf den Raspberry Pi hochladen.

    Dazu habe ich nach Anleitung aus dem Internet eine HTML-Datei geschrieben, welche per Form die Datei an ein PHP-Script übergibt.

    Auf einem anderen Webserver nutze ich dies bereits seit einiger Zeit erfolgreich.

    Nun wollte ich dies auch auf dem Raspberry Pi installieren.

    Die Installation von Apache2 und PHP ging ohne Probleme und ich kann HTML- und PHP-Seiten verarbeiten.

    Das Absenden der Datei scheint zu funktionieren, kommt die Datei nicht im Ziel an.

    Typischerweise wird im PHP die Datei mittels der Funktion

    Code
    $tmp_name = $_FILES['datei']['tmp_name'];
    move_uploaded_file($tmp_name,"upload/".$filename)

    von ihrem temporären Landeplatz an die endgültige Stelle kopiert.

    Bei debuggen sehe ich, dass die Variable $tmp_name ins Verzeichnis /tmp/... weist, wo die Datei offensichtlich temporär landen soll.

    Doch dort erscheint sie nicht.

    Das Verzeichnis /tmp erlaubt bei mir allen alles: drwxrwxrwt 9 root root 4096 Dec 26 22:09 tmp

    Woran kann das noch klemmen?

  • Dateien mittels Form und PHP hochladen klappt nicht? Schau mal ob du hier fündig wirst!

  • Die php.ini habe ich nicht angepasst.

    Hab das gleiche nochmal auf einem frischinstallierten Raspberry Pi wiederholt, mit gleichem Ergebnis...

    Das Verhalten ist unabhängig von der Dateigröße.

    Hier meine Sourcen, die ich mit nur minimalen Änderungen aus dem WWW abgekupfert habe:

    Meine sendendes Folmular:

    Code
    <form action="upload.php" method="post" enctype="multipart/form-data"> 
      <input type="file" name="dateiupload"> 
      <input type="submit" name="btn[upload]"> 
    </form>

    Und hier das empfangende PHP:

    PHP
    <?php 
    $uploaddir = 'upload/';
    $uploadfile = $uploaddir . basename($_FILES['dateiupload']['name']);
    // move_uploaded_file($_FILES['dateiupload']['tmp_name'], $uploadfile);
    echo '<pre>';
    print_r($_FILES);
    print "</pre>";
    ?>

    In meinem PHP hab ich testweise die Funktion move_uploaded_file() auskommentiert, um nachzusehen, ob die temporäre Datei im /tmp/ Verzeichnis landet,

    tut sie aber nicht...

    Und hier die Debugging-Ausgabe:

    Offensichtlich kommt was an, die Dateigröße ist korrekt und es wird ein temporärer Dateinamen bekanntgegeben.

    • Offizieller Beitrag

    Wenn ich mir das Beispiel unten ansehe, dann steht im $uploaddir der absolute Pfad mit einem Slash vorangestellt...

    http://php.net/manual/de/feat…post-method.php

  • tut sie aber nicht...

    Doch, tut sie, wie im Debug output siehst.

    ABER, PHP entfernt diese Datei sofort nach Scriptende, so dass Du sie danach nicht mehr finden kannst.

    Zitat von http://de2.php.net/manual/de/features.file-upload.post-method.php

    Wurde die Datei in dem temporären Verzeichnis nicht verschoben oder umbenannt, wird sie am Ende des Requests gelöscht.

    Existiert das Verzeichnis upload/ relativ von Deinem Script aus mit den richtigen Berechtigungen?!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!