Mit folgendem Script versuche ich, meine Datei ins Verzeichnis Test uplzuloaden, dies funktioniert nicht, die datei wird zwar ohne murren hochgeladen, zumindest scheinbar, aber dann ist sie nicht auf dem server. Getestet habe ich das ganze bislang unter WAMP lokal
if(isset($submit)){
copy($meinedatei,"/test");
echo "Upload erfolgt";
}
echo"<form enctype=\'multipart/form-data\' action=\'$PHP_SELF\' method=\'post\'>
<input type=\'hidden\' name=MAX_FILE_SIZE\' value=\'1000\'>
Datei hochladen:<input name=\'meinedatei\' type=\'file\'>
<input type=\'submit\' name=\'submit\' value=\'hochladen\'>
";
Homepage selbermachen 7.853 Themen, 35.654 Beiträge
Ein kleiner Blick in die Referenz hätte dir verraten, daß PHP eine hocgeladene Datei in ein temporäres Verzeichnis unter einem temporären Namen speichert. Somit existiert die Datei "meinedatei" nicht auf dem server, sondern eine temporäre Datei gleichen Inhaltes. Kleiner Tipp: Besorge Dir eine Referenz und schaue Dir die Umgebungsvariable $_FILES an.
danke,
das habe ich getan doch es wir garkeine datei auf den server geladen, also nicht nur dass ich nichts finde, es findet definitiv kein upload statt, auch nicht wenn ich die referenz komplett kopiere
Lies mal die PHP-Referenz, statt sie auf den Server zu kopieren ;-)
Wenn kein Upload funktioniert, könnte das daran liegen, das du keine Schreibrechte auf das temporäre Verzeichnis hast. Du solltes per phpinfo nachschauen, welches das temporäre Verzeichnis ist, und dann ein Script schreiben, welches dir ein ls -al auf das temporäre Verzeichnis macht. Am Output kannst du sehen, ob es daran liegt. Wenn du definitiv dort schreiben kannst, suchen wir weiter ...
Besorge dir mal Webspace mit Shellaccount, da lessen sich solche Dinge schneller und sicherer feststellen!
Zaphod´s Tipp könnte es schon bringen. Auch eine Überprüfung, ob ein File-Upload in der Konfiguration überhaupt erlaubt ist wäre nicht falsch.
also das ganze habe ich mit dem oben angegebenen script lokal getestet, noch nicht beim provider, mein temp verzeichnis ist daher sowieso für mich zugängig. phpinfo() bestätigt das, das temp verzeichnis bleibt leer nachdem ich hochgeladen habe, also es wird nichts hochgeladen, die referenz hab ich gelesen :-)
.... mh, darf der lokale Webserver auf das Temp-Directory zugreifen (Freigaben unter Win?)? Ob du zugreifen darfst, interessiert nicht ;-(.
Funktioniert das Netzwerk/Loopback-Device?
Hallo nochmal, nach einer schlaflosen Nacht bin ich zur Erkenntnis gekommen, dass ich nicht zu einer Erkenntnis komme...
Folgender copy() Befehl funktioniert einfach nicht:
copy($file,"c:/wampp13cs/dateien/$file.'.bak'");
Dieser Fehler wird ausgegeben:
Warning: copy("C:/wampp13cs/dateien/datei.txt") [function.copy]: failed to create stream: Invalid argument in c:\wampp13cs\htdocs\begin.php4 on line 37
Funktioniert das Netzwerk/Loopback-Device?
Ja, das funktioniert
also ich verwende drei möglichkeiten, um uploads zu debuggen:
1. mit sleep() das skript ein paar sekunden schlafen schicken. dann im tmp-ordner nachschauen, ob die datei existiert. php löscht nach der ausführung alle hochgeladenen dateien im tmp-ordner! nach dem upload wirst du also nie etwas sehen, wenn das skript fertig geparst ist.
2. in phpinfo() müssen im bereich "server variables" im post-segment die files stehen. alternativ kannst du das im skript auch so machen: "print_r($_FILES['namedesformfeldes'])". das ansprechen per globals (also $namedesformfeldes), sollte man aus gründen der sicherheit unterlassen und stattdessen die "superglobals" nehmen. $HTTP_POST_FILES (die sind aber nicht "richtig" superglobal) oder ab php 4.1 ist es auch $_FILES (die schon). auch sollte man die funktionen "is_uploaded_file()" oder "move_uploaded_file()" benutzen, um "spielereien" durch böse jungs etwas zu mildern.
3. benutzt du "flock" im skript? beim zugriff auf die hochgeladenen dateien darf kein flock aktiv sein. davor oder danach ist kein problem (wenn man die beiden oben genannten funktionen nutzt). ob das so "strikt" unter windows ist, weiß ich nicht, aber auf einem lamp ist es das ;)
unter windows sollte es da keine probs geben. verwendest du ntfs? ansonsten sollte es da eigentlich keine zugriffsprobleme geben bei fat(32). wie schon erwähnt, müssen in der php.ini uploads erlaubt sein, was aber per default so ist.
gruß
dumistvieh
super danke dir :)
