DK: Nach Serverumzug schlägt Dateiulpoad fehl

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

  1. 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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 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&amp;" 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.

      1. Kann es auch sein, dass mein Provider den Upload via Browser deaktiviert hat?

  2. 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

    1. 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

      --
      "Hier steht, deutsche Wissenschaftler hätten es im Experiment geschafft, die Lichtgeschwindigkeit auf wenige Zentimeter pro Sekunde zu verringern." - "Toll. Steht da auch, wie sie es gemacht haben?" - "Sie haben den Lichtstrahl durch eine Behörde geleitet."
      1. 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

        1. 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

          --
          F: Was ist ekliger als ein angebissener Apfel mit einem Wurm drin?
          A: Ein angebissener Apfel mit einem halben Wurm.
          1. 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

  3. 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

    1. 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.