XAMPP Windows lokaler Dateiupload per PHP-Skript

Alles, was PHP betrifft, kann hier besprochen werden.

XAMPP Windows lokaler Dateiupload per PHP-Skript

Postby DesMas » 11. August 2006 11:38

Vorneweg: ja ich hab versucht die Lösung mittels der Suche zu finden, bin aber gescheitert.

Worum gehts:
Ich habe mir ein Datei-Upload Skript (welches übrigens auf meinem Debian Server sauber läuft, wie üblich) geschnappt und versucht in einem neuen Webprojekt lokal zum laufen zu bringen.
Allerdings scheint es so, als ob das $_FILES Array keinerlei Inhalt bekommt, sprich also der Upload fehlschlägt.
Mir stellt sich nun die Frage, woran das liegt?

Code-Auszug
Code: Select all
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

define( 'ROOT_PATH', "./" );

//[...] gekürzt.. globale variablen, Session und includes

if(!ISSET($_POST['check']) || $_POST['check']==""){
   ?>
   <form method="post" action="img_upload.php" target="_self" enctype ="multipart/formdata">
   <input type="file" name ="datei" size="40" maxlength="100000" />
   <input type ="hidden" name="MAX_FILES_SIZE" value="2097152" />
   <input type ="hidden" name="check" value="1" /><br />
   <input type="submit" name="Send" value="Senden"/>
   </form>
   <?php
}else{
   var_dump($_POST);
   var_dump($_FILES);
   //upload
   if(isset($_FILES['datei'])){
      if($_FILES['datei']['error'] != UPLOAD_ERR_OK){
        print "Error on upload\n";
     }else{
        $regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i";
       if(!(preg_match($regExp,$_FILES['datei']['name']))){
          print "Dateiname prüfen!<br />";            
        } else if($_FILES['datei']['size'] > 0 && $_FILES['datei']['size'] <= $MAX_FILES_SIZE){
         
          //[...]gekürzt.. Verarbeitung
         
       }else{
          print "File Size Prüfen!<br />";
         print"Max_Size: ".$MAX_FILES_SIZE.", ist groesse: ".$_FILES['datei']['size']."\n";
       }
     }
   } else {
      print "Upload Error<br>";
   }
}

?>


Ausgabe der Variablen an einem Bsp:
array(4) {
["datei"]=> string(11) "bs_prf9.pdf"
["MAX_FILES_SIZE"]=> string(7) "2097152"
["check"]=> string(1) "1"
["Send"]=> string(6) "Senden"
}
array(0)
{ }
Upload Error

demnach ist $_FILES leer.

Safemode ON/OFF hat keinen Einfluss
Upload Pfad is auf "C:\Programme\server\xampp\tmp"
Verlegung auf anderes Verz. bringt keine Lsg.
Rechte? nun habs mit Vollzugriff für "Jeder", sowie Nutzerkonto versucht, kein Erfolg.
Session-Variablen landen jedoch sauber im Temp Ordner...

Tja, nun welches Konf Problem Windows<->XAMPP ist es?
DesMas
 
Posts: 11
Joined: 11. August 2006 11:03

Postby zAp!! » 11. August 2006 12:36

Bei dem
Code: Select all
<input type="file" .........

hast du bei name="blabla" einen Abstand vor dem Gleichzeichen, vielleicht ist es das.....
Ich hätte sonst keine Idee was da schief laufen könnte. Ansonsten sollte es doch funktionieren.
mfg zAp!!
Anti Mysql User
because use VDB as your DB!
http://www.zap.de.tk
User avatar
zAp!!
 
Posts: 38
Joined: 28. August 2005 19:34
Location: A-Feldkirch

Postby Wiedmann » 11. August 2006 12:45

Diese Frage plus Lösung gab's zum letzten Mal vor einem Monat:
http://community.apachefriends.org/f/viewtopic.php?t=19037
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby DesMas » 11. August 2006 15:28

Wiedmann wrote:Diese Frage plus Lösung gab's zum letzten Mal vor einem Monat:
http://community.apachefriends.org/f/viewtopic.php?t=19037


hmm schon gedacht hatte das das wieder verschoben wird, auch wenn ich es nicht auf einen skriptfehler zurückverfolgen kann.....

Naja.. den thread hatte ich vorher auch gelesen... darin sehe ich aber keine Lösung an sich.

Das nette kleine Test Skript darin wird übrigens seltsamerweise gar nicht bei mir lokal geparsed???
Im Browser kommt folgender Quellcode zur Ansicht:

Code: Select all
<pre>
   <?php
      error_reporting(E_ALL);
      print_r($_FILES);
   ?>
</pre>
<?php
   phpinfo();
?>

Förmlich die PHP Datei selber, als Anzeige halt nur paar Leerzeilen..
Interessant, aber treibt mich noch in den Wahnsinn, zumal andere PHP Seiten sauber funzen
DesMas
 
Posts: 11
Joined: 11. August 2006 11:03

Postby Wiedmann » 11. August 2006 16:38

Naja.. den thread hatte ich vorher auch gelesen... darin sehe ich aber keine Lösung an sich.

Das ist lustig. In deinem Script oben hast du genau den gleichen Fehler gemacht, der im genannten Thread letztendlich auch zur Lösung führte...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby DesMas » 12. August 2006 14:40

Und der wäre? (sry sehe den nicht)

Da ich nur eine Datei habe sehe ich keinen Sinn darin ein Array aufzubaun.
Code: Select all
name="datei[]"
??
Zumal ich nicht verstehen könnte warum es daran liegen sollte.
ein var_dump($_FILES) müsste dennoch etwas ergeben, egal welcher art die Variable ist. Schließlich wäre bei einem Array der name dessen gleichbedeutend mit Index 0.

Also, wäre sehr verbunden, wenn jemand mal definitiv meine blinden Augen sagen könnte, was der Fehler ist, der das Skript lokal zum scheitern verdonnert.
Danke
DesMas
 
Posts: 11
Joined: 11. August 2006 11:03

Postby DesMas » 12. August 2006 14:48

OK so wenn man lang genug auf den code starrt.....

Kern-Fehler:
enctype ="multipart/formdata" --> enctype ="multipart/form-data"

ebenfalls Müll hier war die Verwendung von $MAX_FILES_SIZE
$_POST['MAX_FILES_SIZE'] ist korrekt
DesMas
 
Posts: 11
Joined: 11. August 2006 11:03

ich hab die lösung ;-)

Postby thE_iNviNciblE » 01. May 2007 17:39

Hallo liebe leute hier,

ich hab dieses topic auch komplett durchgelesen.
ich stand vor dem gleichen problem und konnte die lösung finden!

es lag bei mir wirklich an einer domainweiterleitung.

Code: Select all
<form action="tmp.php"


dies bewirkte das der aufruf über http://www.freie-welt.eu lief. aber wie sich in meiner meiner vhost datei von apache sehen lässt wurde aber your-mind-is-free.tsecurity.de, dem server ist aber nur your-mind-is-free.tsecurity.de bekannt und kein post call von freie-welt.eu


<VirtualHost your-mind-is-free.tsecurity.de>
ServerName your-mind-is-free.tsecurity.de
DocumentRoot xxxxxxxxXX/Freie-Welt/
</VirtualHost>

Code: Select all
<form action="your-mind-is-free.tsecurity.de/tmp.php"....


und schon lief die sache wieder und mein $_FILES war auch nicht mehr leer =)
thE_iNviNciblE
 
Posts: 1
Joined: 01. May 2007 17:30


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests