Upload Script funktioniert nicht
Robert
- php
0 Andreas Korthaus0 wahsaga
0 Tom0 Robert
0 Robert
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
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
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
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
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.
Sehr komisch. Ich hab jetzt nichts am Script geändert und es klappt von einmal.
*grübel*
Danke trotzdem.