php Upload Skript für Dateien über 2MB möglich?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php Upload Skript für Dateien über 2MB möglich?

    Hi Leute
    Also ich habe eine kleine Seite, bei der sich die Besucher einloggen müssen. Nun eine Funktion die ich anbieten möchte, ist dass die Besucher mir eine Datei hochladen können. Ich habe dazu mal ein ganz einfaches php Skript verwendet, dass in dieser Form überall im Netz zu finden ist. Das Problem ist nun aber, dass die Dateigrösse auf ca. 2MB beschränkt ist, obwohl ich im Tag MAX_FILE_SIZE einen viel höheren Wert eigesetzt habe. Wie kann ich dass nun anstellen, dass damit auch viel grössere Dateien hochgeladen werden können (eigentlich ohne Grössenbeschränkung)? Ich habe auch versucht die Tags des hidden inputs wegzulassen, so dass das gar nicht definiert wäre - hat aber auch nicht geklappt.
    Also hier sind mal die beiden Dateien, die ich für diese Funktion nutze:
    upload.php
    PHP-Code:
    <?php
    session_start
    ();
    include 
    'sessionhelpers.inc.php';
    if (!
    logged_in())
        echo 
    'You have to login first! <a 

    href="login.php">Log-in</a>'
    ;
    #überprüfung ob der User eingeloggt ist
    ?> #Die eigentliche Site
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 

    Transitional//EN">
    <html>
    <head>
    <title>File upload</title>
    </head>
    <body  bgcolor="#999933"  text="#ffff00"><font face="arial">
    <h1>Send me a file</h1>
    <p>
    Here you can upload some files you want to see me.<br>
    <form enctype="multipart/form-data" action="uploader.php" 

    method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000000" 
    /> #änderungen auch zu riesiger Zahl ändert nichts!
    Choose a file to upload: <input name="uploadedfile" 

    type="file" /><br>
    <input type="submit" value="Upload File" />
    </form>
    <p>
    <form action="index1.php"><input type="submit" 

    value="Back"></form>
    </font>
    </body>
    </html>
    Und hier die Datei uploader.php
    PHP-Code:
    <?php

    $target_path 
    "uploads/";

    $target_path $target_path basename$_FILES['uploadedfile']['name']);

    if(
    move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
        echo 
    'The file 'basename$_FILES['uploadedfile']['name']). ' has been uploaded <br>
    <form action="upload.php"><input type="submit" value="Back"></form>'
    ;
    } else{
        echo 
    "There was an error uploading the file, please try again!";
    }
    ?>
    Ich danke schon mal im für jegliche Hilfe.

  • #2
    schaue dir mal deine php.ini an. dort ist die maximale größe definiert. aber mal ehrlich.... für solche dinge ist http nicht geeignet.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Danke für deine Antwort.
      Also erst einmal versteh ich nicht welche Datei du meinst (php.ini). Die Datei wäre logischerweise auf dem Server, aber da hab ich keine solche Datei. Das ist auch kein Wunder, da es kein Windows System ist. Ich benutze den WebServer von Mac OS X 10.3.9 Server.
      Zu deiner Aussage, dass für so was http nicht gerade geeignet sei, ist mir schon klar. Allerdings ist es mit mir nicht möglich den FTP Server sauber zu konigurieren (liegt an einem Fehler, der Apple offfiziell bestätigt hat), so dass ich auf diese Variante zurückgreiffen muss. Um das Problem zu umgehen, müsste ich mir Mac OS X 10.4 Server zulegen, was jedoch neue Hardware als auch hohe Investitionen in die neue Software erfordern würde. Deshalb veruche ich es so.
      Ich habe auch einmal ein JavaApplet getestet (JUpload), konnte es allerdings nie Fehlerfrei betreiben, insbesondere da ich es nicht auf einer php Site integrieren konnte (offizieller Bug).

      Kommentar


      • #4
        da es kein Windows System ist
        habe ich auch nicht. und ich habe einen php.ini.

        auch auf dem mac könntest du diese datei in /etc finden.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          falls du die datei imme rnoch nicht gefunden hast. Du kannst den Limit trotdem rausfinden.

          Mach einfach eine neue Php datei mir folgendem Inhalt:

          PHP-Code:
          <?php
          phpinfo
          ();
          ?>
          Diese Funktion gibt den Inhalt der PHP.INI aus.

          Kommentar


          • #6
            Danke, so ich hab die Datei nun auch noch gefunden, sie heisst bei mir halt nicht genau php.ini, so dass ich sie beim durchsuchen nicht gefunden habe. Sie heisst hier php.ini.default
            Jetzt habe ich aber noch eine (hoffentlich letzte) Frage:
            Ich muss ja nun post_max_size als auch upload_max_filesize ändern, allenfalls ja auch memory_limit ändern. Was ist da für ein Wert so als Sinnvoll zu erachten (im konkretten Fall hier)? Ich meine kann ich so überhaupt ein File grösser als mein RAM hochladen?
            Wohl eher nicht. Gäbe es nicht einen direct write to disk Befehl oder so?

            Kommentar


            • #7
              Soweit ich weiß, werden HTTP hochgeladene Dateien nicht im RAM, sondern auf der Festplatte in nem tmp oder swap file gespeichert, oder?

              Demnach sollten auch größere Dateien möglich sein.

              Was sinnvoll ist - musst du wissen. Die Größe, die du für sinnvoll erachtest, bzw. nötig ist für deine Useruploads.

              Das Problem ist halt, dass eine Dateigrößenüberprüfung erst erfolgt, nachdem die Datei hochgeladen wurde. Der User lädt also hunderte von MB hoch (Beispiel), was deine Bandbreite und Traffic abgreift, als auch für die Dauer des Hochladevorgangs Festplattenspeicher (sollte jetzt weniger das Problem sein), um dann am ENDE des Hochladens dem User zu sagen "Nee du, is zu groß".

              Wenn du also 200MB zulässt, und jemand lädt 250MB hoch, wird er danach sehr verärgert sein...

              Mach am besten also irgendwo eine Notiz auf der Seite, nicht, dass deine User völlig gefrustet davonlaufen (sofern ich jetzt in meinen Ausführungen nicht irgendwo Fehler eingebaut habe)

              Kommentar


              • #8
                Danke. Dann überleg ich mir mal was brauchbares.
                Das mit der maximalen Grösse ist ein netter Tipp, aber ich habe das bereits jetzt einführen müssen, da ich ja zur Zeit eine 2MB Limite habe.

                Danke nochmals an alle für die schnelle Hilfe.

                Kommentar


                • #9
                  Sie heisst hier php.ini.default
                  Ich vermute mal stark, dass wenn du etwas in obengenannter Datei änderst, es nichts am PHP-Verhalten ändern wird.
                  Ich jedem Manual zu php wird bei der Installation gesagt, man solle die php.ini.default oder php.ini.dist anpassen und in php.ini umbenennen...

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    OK. Das wissen fehlt mir, da ich PHP nie installiert habe (kommt mit dem OS). Also ich muss demnach folgendermassen vorgehen:
                    1. Ich erstell eine Sicherheitskopie von php.ini.default
                    2. Ich ändere php.ini.default
                    3. Ich ändere den Namen der abgeänderten Datei in php.ini

                    Versth ich das so richtig?

                    Kommentar

                    Lädt...
                    X