Seite 1 von 1
Benutzer-/Gruppenrechte: ca. 190 werden übernommen (gelöst)
Verfasst: Fr 5. Sep 2008, 21:21
von mfweb
Hallo zusammen,
ich habe ein etwas merkwürdiges Verhalten beobachtet, von dem ich nicht glauben kann, dass es ein Bug ist (sonst hätten sich sicherlich schon mehr Leute gemeldet

):
Wenn ich für Gruppen oder Benutzer die Rechte vergeben will, dann werden von der Checkbox-Matrix (z.Bsp. Content oder Kategorien) nur ca. 190 (+/- 3) übernommen. Dabei werden von den jeweils markierten die ersten ca. 190 übernommen (von links nach rechts, oben nach unten).
Hier ist etwas ähnliches beschrieben:
http://forum.contenido.org/viewtopic.php?t=12799. Allerdings ist das glaube ich mittlerweile gefixt, da entsprechende DB-Felder vom Typ mediumtext sind.
Beobachtet habe ich das zunächst in Version 4.8.7. Aber auch bei einer frischen Installation von Version 4.8.8 konnte ich im Beispielmandanten bei der Content-Matrix zum Beispiel nicht alle Checkboxen speichern. Getestet auch auf verschiedenen Servern, jeweils mit PHP5. Im Errorlog steht nichts (hat aber die richtigen Rechte).
Ich habe langsam keine Idee mehr. Weiß jemand Rat?
Grüße
mfweb
Verfasst: Fr 5. Sep 2008, 22:58
von OliverL
Ich würde einfach mal in:
Tabelle: con48_rights
Fld: idright
von: int(10)
in: bigint(21)
ändern
ist nur einer Vermutung aber könnte daran liegen.
mfg OliverL
Verfasst: Fr 5. Sep 2008, 23:42
von mfweb
Ich habe es ausprobiert, funktioniert aber auch nicht.
Wäre ja auch etwas merkwürdig. In der Demoinstallation ist der höchste Wert von idright 1016. Und für diese Zahl (bzw. 1016 + x) sollten ja eigentlich 4 Byte ausreichen.
edith: Habs mittlerweile auch mit ner Contenido 4.6.8 auf einem dritten Server ausprobiert, aber euch dort funktioniert es nicht (sowohl mit PHP4 als auch mit PHP5).
Verfasst: Sa 6. Sep 2008, 11:27
von Oldperl
Hallo mfweb,
kann deinen Fehler nicht reproduzieren. Habe eine Testinstallation 4.8.8 auf XAMPP hier laufen mit dem Demomandanten. Bin folgendermaßen vorgegangen:
- Testbenutzer angelegt
- Rechte für Demomandant und Sprache Deutsch vergeben
- In Rechtemaske "Content" auf "Markiere Alle" und gespeichert
- In Rechtemaske "Module" auf "Markiere Alle" und gespeichert
Schau ich nun, auch nach erneuter Anmeldung nach, sind alle Häckchen gesetzt.
Könntest du mir evtl. sagen ob dein Vorgehen gleich war, oder ob du den Fehler z.B. nach einer Migration, Neuinstallation oder was auch immer hast?
Gruß aus Franken
Ortwin
Verfasst: Sa 6. Sep 2008, 12:23
von mfweb
Danke, dass du versuchst hast, das Verhalten nachzuvollziehen.
Ursprünglich war es (nach Hackversuch einer älteren Version) eine "halbe" Neuinstallation: alte DB und Dateien von Version 4.8.8 und dann ein Upgrade.
Danach hatte ich das aber auch mit einer richtigen Neuinstallation und dem Beispielmandanten ausprobiert. Und jetzt habe ich noch einmal neu installiert und die von dir beschriebenen Schritte durchgeführt. Leider immer mit demselben Ergebnis.
Das merkwürdige ist aber auch, dass ich das auf mehreren verschiedenen Servern rekonstruieren kann mit unterschiedlichen Contenido-Versionen (bis hin zur 4.6.8 ).
max_execution_time steht übrigens jeweils auf 30 und memory_limit auf 20 bzw. 128
Die Matrix wird auch nach dem Speichern ganz normal geladen (also keine weiße Seite oder so), nur halt mit ein paar Häkchen zu wenig, sobald die Matrix mehr als diese ca. 190 Felder hat.
Verfasst: Sa 6. Sep 2008, 16:12
von mfweb
Tja, was soll ich da sagen ... ich habs nun doch einmal lokal installiert (Contenido 4.8.8 mit aktueller XAMPP) und diese Installation übernimmt alle Rechte.
Damit müsste es doch eigentlich am Server liegen und kann nicht mehr primär an Contenido liegen, oder? Meine bisherigen Versuche waren zwar auf verschiedenen Servern, aber alle beim selben Webhoster. Kann es in PHP und/oder MySQL eine Einstellung geben, die mit Contenido (bzw. dessen Art wie es programmiert ist) nicht klar kommt? Wenn die Rechte abgespeichert werden, dann sind das ja beim Beispielmandanten schon knapp 550 Häkchen und damit 550 Insert-Befehle in die DB innerhalb kürzester Zeit. Kann es daran liegen?
Ich wüsste im Moment auch beim besten Willen noch nicht, womit ich mich ggf. beim Webhoster melden könnte.
Verfasst: Di 9. Sep 2008, 23:32
von mfweb
Leider konnte ich das Problem bisher noch nicht lösen.
Kann mir vielleicht jemand die Vermutung aus dem vorherigen Post bestätigen/entkräften? Oder kennt noch jemand einen anderen Ansatzpunkt, wo man anfangen kann, zu suchen?
Danke schon einmal,
mfweb
Verfasst: Mi 10. Sep 2008, 07:38
von Dodger77
Tritt das in verschiedenen Browsern (evtl. auf verschiedenen Rechnern) genauso auf? Wenn ja, ist vielleicht ein extrem kleiner Wert für post_max_size auf dem Server eingestellt?
Verfasst: Mi 10. Sep 2008, 11:17
von mfweb
Das tritt sowohl mit Firefox als auch mit dem IE auf (auch auf verschiedenen Rechnern).
post_max_size stand auf 8M, aber auch mit 20M klappts leider nicht.
EDITH: Dies sind die restlichen PHP-Einstellungen, die ich ändern kann:
Code: Alles auswählen
safe_mode off
register_globals off
magic_quotes_gpc off
display_errors on
post_max_size 20M
upload_max_size 8M
memory_limit 20M
Ist da vlt. noch etwas verdächtiges dabei?
Verfasst: Mi 10. Sep 2008, 11:24
von timo.trautmann_4fb
Vielleicht hat der Server ein paar PHP Sicherheitsmechanismen aktiv die das Script abbrechen wenn es mehr als X Abfragen macht mehr als X rekursive Aufrufe macht. Diese Proble hatten wir schon einmal. Hier könntest du eventuelle Fehlermeldungen des Scripts im Apache LOG finden.
P.S. Es gibt auch externe Überwachungstools die mit PHP nicht direkt etwas zu tun haben und den PHP Prozess dann direkt beenden.
Verfasst: Do 11. Sep 2008, 11:19
von mfweb
Danke für den Tip! Ich hatte mich mit meinem Webhoster in Verbindung gesetzt und es gab tatsächlich so eine Einstellung, die die Requests auf 200 beschränkte. Allerdings funktioniert es mit dem Wert 500 immer noch nicht.
Ich wollte jetzt einfach mal alle DB-Requests zählen, die beim Aufruf eines Seite durchgeführt werden. Dafür sollte es doch ausreichen, am Anfang der front_content.php bzw. am Anfang der /contenido/main.php
einzufügen , diese Variable in der Methode query() aus der Datei /conlib/db_mysql.inc zu inkrementieren und dann am Ende der beiden Dateien die Variable auszugeben, oder? Oder bleiben mir da noch DB-Requests verborgen?
Mit dieser Methode werden beim Speichern aller Rechte nämlich "nur" 321 Requests gezählt, was ja landläufig < 500 ist.
Verfasst: Do 11. Sep 2008, 11:24
von timo.trautmann_4fb
Ja es gibt aber noch weitere Einschränkungen, beispielsweise wie viele DB Verbindungen ein Script gleichzeitig nutzen kann (Contenido erstellt sehr viele Verbindungen gleichzeitig) oder auch wie oft sich eine Funktion rekursiv aufrufen darf (auch das macht Contenido sehr oft)
Du solltest weitere Einschränkungen des Hosters prüfen bestimmt liegt es an einer dieser Einstellungen. Normalerweise sollte aber das Apache Log Aufschluss darüber geben warum ein Script (extern) abgebrochen wurde. Diesen Fall vermute ich hier. Alternativ eine saubere Neuinstallation auf dem Server machen und diese dann dort einfach mal Testen. Wenn diese geht ist etwas mit dem Update schief gelaufen.
Verfasst: Do 11. Sep 2008, 11:41
von mfweb
Eine saubere Neuinstallation habe ich ja schon häufiger gemacht. Das Problem tritt ja sogar mit dem unangetasteten Demomandanten auf.
Auf die Apache Log habe ich leider keinen Zugriff (bzw. nur auf eine access.log), sodass ich auf die Informationen des Webhosters angewiesen bin. Aber ich werde mich noch einmal mit ihm in Verbindung setzen.
Danke für die weiteren Anregungen. Ich wusste nicht, dass man die Einstellungen so feinstufig machen kann.
Verfasst: Do 11. Sep 2008, 11:44
von timo.trautmann_4fb
In Php kann man das auch nicht machen, aber mit externen Tools schon. Gerade wenn auf einem Server viele Kunden sind werden diese Tools eingesetzt um eine zu hohe Last oder Hackingversuchen vorzubeugen. Contenido ist ein recht anspruchsvolles System, was sie Performance angeht und daher unter Umständen bei solchen Einschränkungen nicht lauffähig.
Verfasst: Fr 12. Sep 2008, 19:15
von mfweb
So, in Zusammenarbeit mit dem Webhoster haben wir jetzt Contenido ans laufen gebracht.
Für die Nachwelt: Es lag nicht an Contenido, der Datenbank, oder Restriktionen bei den DB-Requests ... sondern ganz einfach daran, dass die Anzahl der POST-Variablen von Formularen beschränkt war.
Danke @timo und die anderen für die Anregungen und Geduld, obwohl es ja primär kein Contenido-Problem war.
