Homepage selbermachen 7.852 Themen, 35.619 Beiträge

php upload problem

Heinz_Malcher / 10 Antworten / Baumansicht Nickles

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\'>
";

bei Antwort benachrichtigen
basil Heinz_Malcher „php upload problem“
Optionen

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.

bei Antwort benachrichtigen
Heinz_Malcher basil „Ein kleiner Blick in die Referenz hätte dir verraten, daß PHP eine hocgeladene...“
Optionen

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

bei Antwort benachrichtigen
Zaphod Heinz_Malcher „danke, das habe ich getan doch es wir garkeine datei auf den server geladen,...“
Optionen

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!

bei Antwort benachrichtigen
basil Heinz_Malcher „danke, das habe ich getan doch es wir garkeine datei auf den server geladen,...“
Optionen

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.

bei Antwort benachrichtigen
Heinz_Malcher Nachtrag zu: „php upload problem“
Optionen

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 :-)

bei Antwort benachrichtigen
Zaphod Heinz_Malcher „also das ganze habe ich mit dem oben angegebenen script lokal getestet, noch...“
Optionen

.... mh, darf der lokale Webserver auf das Temp-Directory zugreifen (Freigaben unter Win?)? Ob du zugreifen darfst, interessiert nicht ;-(.
Funktioniert das Netzwerk/Loopback-Device?

bei Antwort benachrichtigen
Heinz_Malcher Zaphod „.... mh, darf der lokale Webserver auf das Temp-Directory zugreifen Freigaben...“
Optionen

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


bei Antwort benachrichtigen
Heinz_Malcher Zaphod „.... mh, darf der lokale Webserver auf das Temp-Directory zugreifen Freigaben...“
Optionen
darf der lokale Webserver auf das Temp-Directory zugreifen (Freigaben unter Win?)? Ob du zugreifen darfst, interessiert nicht ;-(.
Funktioniert das Netzwerk/Loopback-Device?


Ja, das funktioniert
bei Antwort benachrichtigen
Dumistvieh Heinz_Malcher „php upload problem“
Optionen

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

--- wie immer: ALLE ANGABEN OHNE GEWEHR ÄH GEWÄHR!
bei Antwort benachrichtigen
Heinz_Malcher Dumistvieh „also ich verwende drei möglichkeiten, um uploads zu debuggen: 1. mit sleep das...“
Optionen

super danke dir :)

bei Antwort benachrichtigen