Contao-Camp 2024
Ergebnis 1 bis 30 von 30

Thema: Upload: max. 2 MB trotz höherer Werte in php.ini

  1. #1
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard Upload: max. 2 MB trotz höherer Werte in php.ini

    Hallo,

    habe gerade folgendes Phänomen:

    • Hoster: 1und1
    • php post_max_size: 32M
    • php upload_max_filesize: 32M

    Contao-Einstellungen lassen Uploads bis 32 MB zu. Trotzdem wird mir beim Upload das default-Limit von 2MB angezeigt, und tatsächlich ist auch ein Upload größerer Dateien nicht möglich.

    Bild:
    upload-limit.gif

    Weiß jemand, an welcher Stellschraube noch gedreht werden muss?

    Vielen lieben Dank!
    Frank

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Verifiziere die Einstellungen über phpinfo();

  3. #3
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Hallo Spooky,

    danke, was meinst Du mit "verifizieren"?
    Dass in der php.ini die entsprechenden Einstellungen auf 32M stehen, hatte ich ja geschrieben.

    • post_max_size 32M 32M
    • upload_max_filesize 32M 32M

    EDIT: Bei Aufruf über phpinfo() steht das natürlich auch so drin (s. Screenshot im ersten Post)

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Ah sorry. Screenshot hatte ich übersehen.

  5. #5
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Und? Mysteriös, oder?

  6. #6
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    In den Contao-Einstellungen hast Du das aber eingetragen?

    Was steht denn im Quellcode am Kopf des Formulars?
    HTML-Code:
    <input name="MAX_FILE_SIZE" value="20480000" type="hidden">

  7. #7
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Im Upload-Formular in der Dateiverwaltung steht:

    HTML-Code:
    <input type="hidden" name="MAX_FILE_SIZE" value="32000000">

  8. #8
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Ich frag mal so: Woher kommt denn der Wert, der im Upload-Formular steht? Also der Text

    Wählen Sie die Dateien, die Sie auf den Server übertragen möchten (maximal 2,0 MiB und 2000x2000 Pixel).
    Irgendwo bezieht Contao ja an dieser Stelle diese "2,0 MiB" her.

    • Aus den Einstellungen, die ich im Contao-Backend unter "Einstellungen > Datei-Uploads > Maximale Upload-Dateigröße" vorgenommen habe, kann dieser Wert nicht kommen, da steht was ganz anderes. Natürlich habe ich da auch schon mehrfach Änderungen vorgenommen, aber das bringt leider nichts.

    • Aus den PHP/php.ini-Einstellungen kann das auch nicht kommen; dort wird ja per phpinfo() klar ein ganz anderer Wert kommuniziert.

    • Auch in dem HIDDEN-Field "MAX_FILE_SIZE" des Upload Formulars geht ein anderer Wert hervor.

    Trotzdem steht im Formular "2 MiB", und Contao lehnt größere Dateien auch strikt ab. Wo kommen diese "2 MiB" her? Weiß das jemand?

    Danke,
    Frank
    Geändert von Traumkunst (19.09.2018 um 11:18 Uhr)

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    » https://github.com/contao/core/blob/....php#L255-L280
    PHP-Code:
    /**
     * Return the maximum upload file size in bytes
     *
     * @return string
     */
    protected function getMaximumUploadSize()
    {
        
    // Get the upload_max_filesize from the php.ini
        
    $upload_max_filesize ini_get('upload_max_filesize');

        
    // Convert the value to bytes
        
    if (stripos($upload_max_filesize'K') !== false)
        {
            
    $upload_max_filesize round($upload_max_filesize 1024);
        }
        elseif (
    stripos($upload_max_filesize'M') !== false)
        {
            
    $upload_max_filesize round($upload_max_filesize 1024 1024);
        }
        elseif (
    stripos($upload_max_filesize'G') !== false)
        {
            
    $upload_max_filesize round($upload_max_filesize 1024 1024 1024);
        }

        return 
    min($upload_max_filesize, \Config::get('maxFileSize'));


  10. #10
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Super, vielen Dank.

    Lade ich eine Datei auf den Server mit folgendem Inhalt:

    PHP-Code:
    <?php
        
    echo ini_get('upload_max_filesize');
    ?>
    so erhalte ich beim Aufruf im Browser

    64M

    Bilde ich die gesamte Funktion etwas genauer ab:

    PHP-Code:
    <?php
        $upload_max_filesize 
    ini_get('upload_max_filesize');
            
        
    // Convert the value to bytes
        
    if (stripos($upload_max_filesize'K') !== false)
        {
            
    $upload_max_filesize round($upload_max_filesize 1024);
        }
        elseif (
    stripos($upload_max_filesize'M') !== false)
        {
            
    $upload_max_filesize round($upload_max_filesize 1024 1024);
        }
        elseif (
    stripos($upload_max_filesize'G') !== false)
        {
            
    $upload_max_filesize round($upload_max_filesize 1024 1024 1024);
        } 
        
        echo 
    $upload_max_filesize;
    ?>
    , so erhalte ich im Browser

    67108864
    Leider weiß ich immer noch nicht, warum Contao beim Upload in der Dateiverwaltung auf diese "2MiB" besteht.

    Ich werd's mal beim 1&1-Support versuchen (Gott steh mir bei...), aber ich schätze mal, die werden mir letzten Endes nur erklären, dass die Limits auf 64M eingestellt sind, und das ja auch überprüfbar durch phpinfo(); oder eben ein Skript wie das obenstehende verifiziert werden kann, und mein eigenes Script (=Contao) daher wohl fehlerhaft ist :-/ Mal sehen.

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Überprüfe, welchen Wert du bei \Config::get('maxFileSize') bekommst.

  12. #12
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.075
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hab gerade mal mit einer 3.5.35 probiert (allerdings bei Webgo).
    Bisher eingestellte Werte:
    Maximale Upload-Dateigröße: 2048000 Bytes
    Maximale Bildbreite: 1200px
    Maximale Bildhöhe: 1200px
    Maximale GD-Bildbreite: 3000px
    Maximale GD-Bildhöhe: 3000px
    Das ergibt in der Dateiverwaltung beim Upload: .. (maximal 2 MiB und 3000x3000 Pixel)

    Dann in den Systemeinstellungen geändert:
    Maximale Upload-Dateigröße: 20480004096000 Bytes
    Maximale Bildbreite: 1200px3000px
    Maximale Bildhöhe: 1200px3000px
    Maximale GD-Bildbreite: 3000px4000px
    Maximale GD-Bildhöhe: 3000px4000px
    Das ergibt in der Dateiverwaltung beim Upload: .. (maximal 3,9 MiB und 4000x4000 Pixel)

    Reagiert also auf die Einstellungen und lässt sinnvollerweise Bilder bis zu der eingestellten Maximalgröße für die GDlib zum Upload zu. Diese können somit auch tatsächlich auf die maximale Breite/Höhe für Bild-Uploads runtergerechnet werden, auch wenn die Erklärung eher suggeriert, dass man nur Bilder bis zur maximalen Bildbreite/-höhe hochladen kann. Naja, aber das war ja nicht die Frage hier . Es liegt also zunächst mal nicht an Contao, also dass hier grundsätzlich nur maximal 2 MiB eingestellt werden könnten, bzw dass geänderte Werte sich nicht auf die Dateiverwaltung auswirken würden.

    Edit: Copy&Paste Fehler korrigiert
    Geändert von tab (19.09.2018 um 14:31 Uhr)

  13. #13
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Hall tab,

    danke, aber abgesehen davon, dass es für mich so aussieht, als wären Deine Vorher-/Nachher-Werte eigentlich identisch* , stelle ich in der Dateiverwaltung leider auch keine Änderungen ("2 MiB") fest, wenn ich spielerisch mal die von Dir genannten Werte für die Bilder/GD-Lib usw. verändere und speichere -- die Anzeige i.d. Dateiverwaltung bleibt leider fest bei max. 2 MiB stehen.

    *(2048000 Bytes/1200px/1200px/3000px/3000px)

  14. #14
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.075
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ja, meine geänderten GD-Werte waren Copy&Paste zum Opfer gefallen . Hilft dir freilich trotzdem nicht weiter. Bleiben denn deine geänderten Werte in den Einstellungen nach dem Speichern erhalten?

  15. #15
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Ja, wenn ich i.d. Einstellungen Werte ändere, bleiben die erhalten; also die neuen Werte werden problemlos akzeptiert und gespeichert.

  16. #16
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    @Spooky -- tut mir leid, aber nach einigem Herumprobieren und Scheitern muss ich leider fragen:

    Überprüfe, welchen Wert du bei \Config::get('maxFileSize') bekommst.
    -- Wie mache ich das?

  17. #17
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.075
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Spannend ... Naja, mit dem Speichern der Einstellungen in die localconfig.php gabs ja bei 1&1 eigentlich auch keine Probleme. Die Website war nämlich früher auch mal bei 1&1. Da fragt man sich schon, woher deine Contao-Dateiverwaltung dann diese alten Werte nimmt, die ja scheinbar nirgends mehr gespeichert sind.

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Zitat Zitat von Traumkunst Beitrag anzeigen
    @Spooky -- tut mir leid, aber nach einigem Herumprobieren und Scheitern muss ich leider fragen:



    -- Wie mache ich das?
    zB in der index.php:
    PHP-Code:
    <?php

    /*
     * This file is part of Contao.
     *
     * (c) Leo Feyer
     *
     * @license LGPL-3.0-or-later
     */

    // Set the script name
    define('TL_SCRIPT''index.php');

    // Initialize the system
    define('TL_MODE''FE');
    require 
    __DIR__ '/system/initialize.php';
    var_dump(\Config::get('maxFileSize')); exit;
    // Run the controller
    $controller = new FrontendIndex;
    $controller->run();

  19. #19
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    @Spooky - Danke, das Ergebnis (Bildschirmausgabe) lautet:

    int(64000000)

  20. #20
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    @tab -- Nein, auch in der localconfig.php werden alle Werte, so wie ich sie im Backend speichere, einwandfrei gespeichert. Von dort werden also auch keine fehlerhaften Werte bezogen o.ä.

  21. #21
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Zitat Zitat von Traumkunst Beitrag anzeigen
    @Spooky - Danke, das Ergebnis (Bildschirmausgabe) lautet:
    Hm, und wenn du
    PHP-Code:
    var_dump(ini_get('upload_max_filesize')); exit; 
    versuchst?

  22. #22
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Dann lautet das Ergebnis:

    string(3) "64M"

  23. #23
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Füge mal solche var_dumps direkt in getMaximumUploadSize ein und öffne den File Upload.

  24. #24
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Ok, ich habe die Funktion entsprechend verändert:

    PHP-Code:
    protected function getMaximumUploadSize()
    {
    [...]
    var_dump(\Config::get('maxFileSize')); //exit;
    var_dump(ini_get('upload_max_filesize')); //exit;  
    return min($upload_max_filesize, \Config::get('maxFileSize'));            


    Dann erscheint im Dateimanager beim Upload folgende Meldung:

    Code:
    int(64000000) string(2) "2M" int(64000000) string(2) "2M"
    Warning: Cannot modify header information - headers already sent by (output started at /homepages/[...]/system/modules/core/classes/FileUpload.php:279) in system/modules/core/library/Contao/Template.php on line 294
    
    #0 [internal function]: __error(2, 'Cannot modify h...', '/homepages/25/d...', 294, Array)
    #1 system/modules/core/library/Contao/Template.php(294): header('Vary: User-Agen...', false)
    #2 system/modules/core/classes/BackendTemplate.php(120): Contao\Template->output()
    #3 system/modules/core/controllers/BackendMain.php(275): Contao\BackendTemplate->output()
    #4 system/modules/core/controllers/BackendMain.php(135): Contao\BackendMain->output()
    #5 contao/main.php(20): Contao\BackendMain->run()
    #6 {main}
    
    
    Warning: Cannot modify header information - headers already sent by (output started at /homepages/[...]/system/modules/core/classes/FileUpload.php:279) in system/modules/core/library/Contao/Template.php on line 295
    
    #0 [internal function]: __error(2, 'Cannot modify h...', '/homepages/25/d...', 295, Array)
    #1 system/modules/core/library/Contao/Template.php(295): header('Content-Type: t...')
    #2 system/modules/core/classes/BackendTemplate.php(120): Contao\Template->output()
    #3 system/modules/core/controllers/BackendMain.php(275): Contao\BackendTemplate->output()
    #4 system/modules/core/controllers/BackendMain.php(135): Contao\BackendMain->output()
    #5 contao/main.php(20): Contao\BackendMain->run()
    #6 {main}
    , darunter dann die normale Upload-Dialogseite (weil ich das "exit" kommentiert hatte).
    Angehängte Grafiken Angehängte Grafiken

  25. #25
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Also ist dort ini_get('upload_max_filesize') plötzlich doch 2M. Versuche das ganze nochmal im abgesicherten Modus.

  26. #26
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Sorry wegen der Pause. Ok, ich hab's im Abgesicherten Modus nochmal probiert, dabei erhalte ich bei Aufruf des Dateiupload-Dialogs auch wieder dieses Ergebnis:

    int(64000000) string(2) "2M" int(64000000) string(2) "2M"
    bei Ausführung des Codes

    PHP-Code:
    var_dump(\Config::get('maxFileSize'));
    var_dump(ini_get('upload_max_filesize')); 
    in der Funktion "function getMaximumUploadSize()". Also, tatsächlich: hier nur 2M.

    Aber, wie ist das denn zu interpretieren?
    phpinfo() sagt ja, es stehen 64M zur Verfügung; in Contao habe ich auch 64M eingestellt (localconfig.php sagt auch folgerichtig: "$GLOBALS['TL_CONFIG']['maxFileSize'] = 64000000;").

    Warum erhalte ich in dieser Funktion 2M statt 64M? Führe ich diese Abfragen direkt in der index.php durch, wie oben beschrieben, erhalte ich ja auch 64M.

  27. #27
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Tja, sehr mysteriös
    Du müsstest dich jetzt den den verschiedensten Stellen des Requests durch debuggen...

  28. #28
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Ah, Moment, hier geht es ja um das Contao Backend. Der Einstiegspunkt dafür ist ja die contao/main.php

    Erstelle mal im Unterordner contao/ der Contao Installation eine Datei namens "test.php" mit
    PHP-Code:
    <?php phpinfo();
    rufe diese Datei im Browser auf und verifiziere nochmal die Einstellungen.

  29. #29
    Contao-Nutzer Avatar von Traumkunst
    Registriert seit
    22.01.2011.
    Ort
    In der Nähe von Dortmund
    Beiträge
    229

    Standard

    Wow Spooky -- danke, darauf wäre ich nie gekommen!

    Es gibt tatsächlich einen Unterschied in der phpinfo(): Im Stammverzeichnis der Contao-Installation steht:

    • post_max_size 64M
    • upload_max_filesize 64M

    , im /contao-Verzeichnis steht:

    • post_max_size 20M
    • upload_max_filesize 2M

    Und was soll ich sagen: Aus irgendwelchen Gründen (wtf!) befand sich im Verzeichnis /contao eine php.ini Darin stand nur eine Zeile:

    post_max_size = 20M

    , aber das hat offenbar gereicht, um irgendwie auch die Einstellung upload_max_filesize = 2M zu erzeugen.

    Wie immer diese Datei dort hingekommen ist. Ich brauchte die php.ini nur zu löschen (umbenennen), schon löste sich das ganze Phänomen in Luft auf. Im Contao-Dateimanager können nun 64M große Dateien hochgeladen werden. Das funktioniert auch einwandfrei jetzt.

    Super ärgerlich.

    Danke vielmals für Deine Hilfe -- ich weiß nicht, ob ich da jemals drauf gekommen wäre.

  30. #30
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Ort
    Deutschland
    Beiträge
    96

    Standard Gleiches Problem nach Providerwechsel

    Hallo,

    habe das gleiche Problem nach Providerwechsel von HostEurope zu Goneo. Dateien größer 2 MB lassen sich nicht hochladen, weder über Backend noch über Formularupload im Frontend. Die Contao Systemeinstellungen und PHP Einstellungen in der .htaccess wurden entsprechned konfiguriert (siehe Bild).
    PHP-Konfig.png

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •