Nach Serverumzug schlägt Dateiulpoad fehl
DK
- php
0 EKKi0 hotti0 Der Martin
0 hotti0 Der Martin
0 hotti
0 hotti0 Pragma
Hallo Forengemeinde,
ich habe ein kleines Problem und zwar funktioniert bei mir der stinknormale Dateiupload nicht mehr seit ich einen neuen Server habe. Woran könnte das liegen?
Mein HTML Code ist eigentlich korrekt:
<form method="post" action="gallery.php?a=upload&<? echo SID; ?>" enctype="multipart/form-data">
<input type="file" name="picture">
<input type="submit" value="Hochladen">
</form>
Der Anfang meines PHP Codes sieht so aus:
<?php
session_start();
if(!$_SESSION['active'])
header("Location: login.php?" . SID);
if($_FILES['picture']['error'] === UPLOAD_ERR_OK){
Den restlichen Teil überspringt das Script ganz einfach, da die Superglobale $_FILES leer ist. (??)
Schonmal danke für eure Hilfe
Gruß Dennis
Mahlzeit DK,
<form method="post" action="gallery.php?a=upload&<? echo SID; ?>" enctype="multipart/form-data">
Hast Du mal den reinen HTML-Code, den der Client an dieser Stelle "zu Gesicht" bekommt, überprüft? Steht dort überhaupt die SID? Sind auf dem neuen Server vielleicht short_open_tags deaktiviert (was auch so bleiben sollte!)?
if(!$_SESSION['active'])
header("Location: login.php?" . SID);if($_FILES['picture']['error'] === UPLOAD_ERR_OK){
[/code]Den restlichen Teil überspringt das Script ganz einfach, da die Superglobale $_FILES leer ist. (??)
Oder vielleicht auch, weil keine aktive Session vorhanden ist? Findet der Wechsel zur (übrigens fehlerhaften, da nicht vollständigen) URL "login.php" statt?
MfG,
EKKi
Hast Du mal den reinen HTML-Code, den der Client an dieser Stelle "zu Gesicht" bekommt, überprüft? Steht dort überhaupt die SID? Sind auf dem neuen Server vielleicht short_open_tags deaktiviert (was auch so bleiben sollte!)?
<form enctype="multipart/form-data" action="gallery.php?a=upload&" method="post">
<input type="file" name="picture">
<input type="submit" value="Hochladen">
</form>
Kommt Dort an. Die SID wird dabei im Cookie gespeichert.
Oder vielleicht auch, weil keine aktive Session vorhanden ist? Findet der Wechsel zur (übrigens fehlerhaften, da nicht vollständigen) URL "login.php" statt?
Die Session ist auch aktiv. Ein Wechsel findet nicht statt.
var_dump($_FILES);
gibt array(0) {}
zurück.
Auf dem alten Server lief alles wunderbar.
Kann es auch sein, dass mein Provider den Upload via Browser deaktiviert hat?
hi,
Den restlichen Teil überspringt das Script ganz einfach, da die Superglobale $_FILES leer ist. (??)
Geh mal ein Stück weiter runter und schau mal, was in <STDIN> steht nach dem Upload einer Textdatei.
Hotti
Hallo,
Den restlichen Teil überspringt das Script ganz einfach, da die Superglobale $_FILES leer ist. (??)
Geh mal ein Stück weiter runter
äh - wie meinst'n das?
und schau mal, was in <STDIN> steht nach dem Upload einer Textdatei.
Du spielst zu viel mit Perlen. PHP hat da leider einige teils nicht rational nachvollziehbare Beschränkungen. So heißt es etwa im Manual zu stdin:
php://input is not available with enctype="multipart/form-data".
Das heißt: Ausgerechnet da, wo's interessant wäre, gewährt PHP uns keinen Zugriff auf STDIN. Ach so, php://input ist übrigens synonym zu php://stdin bzw. allgemein dem Lesen von STDIN.
So long,
Martin
hi,
Geh mal ein Stück weiter runter
äh - wie meinst'n das?
auf bit-Ebene, was denn sonst.
Das heißt: Ausgerechnet da, wo's interessant wäre, gewährt PHP uns keinen Zugriff auf STDIN.
Hab ich gesagt, er solls mit PHP machen?
Hotti
Hallo,
Geh mal ein Stück weiter runter
äh - wie meinst'n das?
auf bit-Ebene, was denn sonst.
ach so, dann is' ja gut.
Das heißt: Ausgerechnet da, wo's interessant wäre, gewährt PHP uns keinen Zugriff auf STDIN.
Hab ich gesagt, er solls mit PHP machen?
Nee, du nicht. Aber PHP ist das Themengebiet dieses Threads. Und nach der Art zu urteilen, wie "DK" fragt, glaube ich nicht, dass er mit anderen Techniken wie etwa Perl Erfahrung hat (ich übrigens auch nicht).
Ciao,
Martin
hi,
Nee, du nicht. Aber PHP ist das Themengebiet dieses Threads. Und nach der Art zu urteilen, wie "DK" fragt, glaube ich nicht, dass er mit anderen Techniken wie etwa Perl Erfahrung hat (ich übrigens auch nicht).
Macht nix. Dann gehen wir eben auf die shell ;-)
Pipe den Kram nach sendmail...
viele Grüße,
duck un wech,
Haselhuhn
hi again,
Den restlichen Teil überspringt das Script ganz einfach, da die Superglobale $_FILES leer ist. (??)
ein
echo $_SERVER[CONTENT_LENGTH];
könnte Dir schonmal verraten, ob überhaupt was ankommt und auch wieviel (bytes).
Hotti
echo $_SERVER[CONTENT_LENGTH];
könnte Dir schonmal verraten, ob überhaupt was ankommt und auch wieviel (bytes).
Dem wage ich zu bezweifeln, es sei denn PHP macht hier irgendwelche magic moves. Eigentlich steht da nur drin, was der Client zu senden gedenkt.
Mich dünkt eher, dass seitens des Apachen oder PHP Uploads disabled sind.