Robert: Upload Script funktioniert nicht

Hallo,

ich habe mir ein Upload Script für Bilder geschrieben. Leider funktioniert es nicht und ich denke es liegt am Server. Ich habe es lokal auf meine WAMP und online probiert, läuft bei beiden nicht.

Jetzt hatte ich im Netz geguckt und bei http://www.php-faq.de ein Tutorial gefunden. Aber auch das Beispiel geht nicht:

<h1>Upload</h1>

<form
  action="<?php echo $_SERVER['PHP_SELF']; ?>"
  method="post"
  enctype="multipart/form-data">
<input type="file" name="probe" />
<input type="submit" value="Los!" />
</form>
<hr />

<?php
  if (isset($_FILES['probe']) and ! $_FILES['probe']['error']) {

move_uploaded_file($_FILES['probe']['tmp_name'], "./newfile.txt");

printf("Die Datei %s steht jetzt als " .
          "newfile.txt zur Verfügung.<br />\n",
      $_FILES['probe']['name']);

printf("Sie ist %u Bytes groß und vom Typ %s.<br />\n",
      $_FILES['probe']['size'], $_FILES['probe']['type']);
  }
 ?>

move_uploaded_file gibt immer FALSE zurück.
Woran könnte es liegen?

Danke.

Mfg Robert

  1. Hi!

    move_uploaded_file gibt immer FALSE zurück.
    Woran könnte es liegen?

    Dafür gibt es laut Manual 2 Gründe:

    Wenn filename keine gültige Datei ist, wird keine Aktion
    ausgeführt, und move_uploaded_file() gibt FALSE zurück.

    Wenn filename eine gültige Datei ist, jedoch aus irgendeinem Grund
    nicht verschoben werden kann, wird keine Aktion ausgeführt, und
    move_uploaded_file() gibt FALSE zurück. Zusätzlich wird eine
    Warnung ausgegeben.

    (Quelle: http://de3.php.net/manual/de/function.move-uploaded-file.php)

    Und Du bist sicher dass $_FILES keinen Fehler meldet? http://de3.php.net/manual/de/features.file-upload.errors.php

    Das hieße dann, dass die Datei tatsächlich erfolgreich hochgeladen werden konnte. Trotzdem würde ich nochmal prüfen ob die Datei tatsächlich lesbar vorliegt, also mal $_FILES['probe']['tmp_name'] mit  is_readable() überprüfen. Mit is_writable() kannst Du entsprechend prüfen, ob Du in das Verzeichnis schreiben kannst. Dann würde ich noch versuchen eine Datei mit selbem Pfad per fopen() zu speichern.

    Evtl. hast Du auch ein Problem mit dem temporären Verzeichnis, gerade unter Windows kommt das oft vor, also mal prüfen ob dies sinnvoll konfiguriert ist.

    Grüße
    Andreas

    --
    SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
    1. hi,

      Wenn filename eine gültige Datei ist, jedoch aus irgendeinem Grund
      nicht verschoben werden kann, wird keine Aktion ausgeführt, und
      move_uploaded_file() gibt FALSE zurück. Zusätzlich wird eine
      Warnung ausgegeben.

      und wenn keine kommt, ist ggf. das error handling zu "sanft" eingestellt. also bitte auch das mal checken.

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Hello,

    <?php
      if (isset($_FILES['probe']) and ! $_FILES['probe']['error']) {

    move_uploaded_file($_FILES['probe']['tmp_name'], "./newfile.txt");

    printf("Die Datei %s steht jetzt als " .
              "newfile.txt zur Verfügung.<br />\n",
          $_FILES['probe']['name']);

    printf("Sie ist %u Bytes groß und vom Typ %s.<br />\n",
          $_FILES['probe']['size'], $_FILES['probe']['type']);
      }
    ?>

    move_uploaded_file gibt immer FALSE zurück.
    Woran könnte es liegen?

    Das Ergebnis wird doch hier gar nicht abgefragt.

    Es kann bedeuten, dass dasr PHP-Runtime nicht lesend auf die Datei (nur auf deren Eigenschaften) zugreifen kann oder dass das Ziel nicht beschrieben werden darf.

    Dass die TMP-Datei nach dem Upload vorhanden ist, geht mit ziemlicher (nicht mit totaler) Sicherheit aus der Eingangs-Bedingung hervor.

    Dass das Ziel nicht beschrieben werden darf, kann an mangelnden Verzeichnisrechten für den PHP-D liegen, am Vorhandensein einer schreibgeschützten gleichnamigen Datei im Zielverzeichnis oder am Safe_Mode, oder auch am Nichtvorhandensein des Zielverzeichnisses.

    Mehr fällt mir im Moment nicht ein.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Das Ergebnis wird doch hier gar nicht abgefragt.

      Ja, aber in meinem eigenen Script. Daher weiß ich das. Der Fehler war ja der gleiche.

      Dass die TMP-Datei nach dem Upload vorhanden ist, geht mit ziemlicher (nicht mit totaler) Sicherheit aus der Eingangs-Bedingung hervor.

      Ja, hab es mit is_readable() getestet und es geht.

      Seltsamer Weise funktioniert es jetzt. Danke trotzdem.

  3. Sehr komisch. Ich hab jetzt nichts am Script geändert und es klappt von einmal.
    *grübel*
    Danke trotzdem.