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.851 Themen, 35.615 Beiträge
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