Hallo,
Aus aktuellem Anlass und da mir dieses Problem gerade untergekommen ist, möchte ich hier eine Lösung für ein Problem veröffentlichen, welches den Schweiß eines Administrators schon auf die Stirn treiben kann. Es tritt nur in Verbindung einer Linux Distribution und PHP mit Suhosin auf.
Und zwar geht es um das Problem, dass nach dem Speichern der Profil-Rechte plötzlich deutlich weniger Haken angegeben sind wie vorgesehen und dadurch Funktionen plötzlich mit „Access Denied“ den Dienst verweigern.
In der Übersicht der Profilrechte in den Modulen befinden sich relativ viele Einstellungsmöglichkeiten.
Durch den Suhosin Sicherheitspatch, welcher für jede PHP-Installation eigentlich obligatorisch ist, wird die maximale Anzahl an REQUEST-Variablen auf 1000 gesetzt.
Auf der angesprochenen Page werden allerdings durch eine etwas ungünstige Programmierung deutlich mehr als 1000 Felder angegeben, welche übertragen werden müssen. Wenn ich in diesem Fall den Speichern-Button betätige, dann werden alle Berechtigungen, welche nicht mit übertragen werden, auf 0 gesetzt, sprich verweigert.
So kann es passieren, dass z.B. der PDFMaker oder die Kommentarfunktion plötzlich den Zugriff verweigert und auch nach erneutem Bearbeiten der Rechte nicht wieder anspringt, da die Felder auch in diesem Fall nicht wieder übertragen werden.
Dieser Effekt kann alle Module betreffen, welche sich im unteren Feld der Modulübersicht befinden und somit die Benutzung von vTiger deutlich einschränken, bzw. ein sinnvolles Arbeiten unmöglich machen.
Um diesen „Fehler“ zu umgehen muss man direkt in der PHP-Konfiguration zwei Werte anpassen. Ich möchte allerdings darauf hinweisen, dass diese Sicherheitsrichtlinien durchaus überdacht wurden und sehr sinnvoll sind. Deshalb bitte nicht grundlos diese Variablen anpassen, wenn das Problem nicht besteht.
Als Änderung sind in die conf-Datei des Suhosin-Moduls (meist unter /etc/php5/conf.d/suhosin.ini) folgende beiden Zeilen am Ende einzufügen:
suhosin.post.max_vars = 2000 suhosin.request.max_vars = 2000
Danach den Webserver kurz neustarten per:
/etc/init.d/apache2 restart
und die Rechtevergabe sollte wieder laufen.
Die angegeben Variablen und der Neustart beziehen sich jeweils auf ein Debian-System, sollten aber auf anderen Distributionen ähnlich, bzw. identisch lauten.
Ich hoffe auch damit eine Hilfe gewesen zu sein.
Fragen dazu beantworte ich natürlich gern über die Kommentarfunktion.
Stefan