Joomla-Optionen werden ohne Fehlermeldung nicht gespeichert: Die stille 'max_input_vars' Falle

Wenn Sie eine Joomla-Website verwalten – insbesondere eine, auf der eine leistungsstarke Erweiterung wie Phoca Cart läuft –, sind Sie möglicherweise schon einmal auf ein frustrierendes „Geisterproblem” gestoßen. Sie klicken in Ihrer Konfiguration auf „Speichern”, die Seite wird neu geladen, aber Ihre Änderungen sind verschwunden. Schlimmer noch, es wird keine Fehlermeldung angezeigt, und Sie werden oft zur globalen Konfigurationsseite von Joomla weitergeleitet, anstatt in der Komponente zu bleiben.

Die eigentliche Ursache: Zu viele Variablen

Das Problem liegt selten bei der Erweiterung selbst, sondern eher bei einer PHP-Einschränkung namens max_input_vars.

In einer Standard-Joomla-Umgebung gilt jede Einstellung, jeder Schalter und jedes Berechtigungsfeld als „Variable“. Wenn Sie Ihre Konfiguration speichern, werden alle diese Variablen in einer einzigen Anfrage an den Server gesendet. Mit dem Wachstum Ihrer Website steigt auch die Komplexität Ihrer Berechtigungen (ACL).

Wenn Ihre Joomla-Instanz eine große Anzahl von Benutzergruppen hat, muss jede Erweiterung Berechtigungseinstellungen für jede Gruppe und jede Aktion speichern. In einem komplexen Shop wie Phoca Cart kann das Hinzufügen weiterer Benutzergruppen zu Joomla leicht dazu führen, dass die Gesamtzahl der Formularfelder auf über 1.000 steigt, da es viele spezifische Zugriffsrechtsaktionen gibt.

Warum gibt es keinen Fehler?

In den meisten Standard-Serverkonfigurationen ist max_input_vars auf 1000 gesetzt. Wenn Sie ein Formular mit 1200 Variablen absenden, ignoriert PHP einfach alles nach der 1000. Variable. Es löst keinen „Fatal Error“ aus. Es schneidet lediglich die Daten ab.

Da die Daten unvollständig sind, gehen die Sicherheitstoken oder spezifischen Aufgabenbefehle von Joomla verloren. Dies führt dazu, dass das System stillschweigend fehlschlägt oder Sie zurück zur globalen Konfiguration weiterleitet, da es nicht weiß, was es mit der fehlerhaften Anfrage tun soll.

Die Lösung: Erhöhung des Limits

Um dies zu beheben, müssen Sie Ihren Server anweisen, mehr Eingabevariablen zu akzeptieren. Dazu müssen Sie Ihre php.ini Datei ändern.

  • Suchen Sie Ihre php.ini Datei (oder wenden Sie sich an Ihren Hosting-Anbieter).
  • Finden Sie die Zeile: max_input_vars
  • Erhöhen Sie den Wert: Für Websites mit vielen Benutzergruppen empfehlen wir beispielsweise 2000.
    ; Example of increased limit in php.ini
    max_input_vars = 2000 

Nachdem Sie diese Änderungen vorgenommen haben, müssen Sie Apache neu starten, damit sie wirksam werden.

Alternativ: .htaccess

Wenn Sie nicht auf die Datei php.ini zugreifen können, können Sie versuchen, diese Zeile zu Ihrer .htaccess Datei hinzuzufügen:

php_value max_input_vars 2000

Sobald dieses Limit erhöht ist, sollten Ihre Einstellungen korrekt gespeichert werden, ohne dass es zu einer verwirrenden Weiterleitung kommt.