Möglicherweise hilft es den Cache auf Datei-basiert umzustellen. Dazu in der inc/config.php in der Zeile:
PHP-Code:
$config['cachestore'] = "db";
"db" durch "files" ersetzen.
Dann bekomme ich folgende Fehler:
Zitat:Warning [2] is_writable() [function.is-writable]: !open_basedir restriction in effect. File(/home/www/cwcity/hosting/g/y/gypsydeath/htdocs/cache) is not within the allowed path(s): (��1��E�) - Line: 70 - File: inc/cachehandlers/disk.php PHP 5.3.27 (Linux)
und:
Zitat:MyBB has experienced an internal error and cannot continue.
Error Type:
MyBB Error (45)
Error Message:
The data cache directory (cache/) needs to exist and be writable by the web server. Change its permissions so that it is writable (777 on Unix based servers).
Der cache-Ordner sowie alle Dateien da drin haben die Rechte 777.
Okay.. ich glaube, ich beseitige das Problem gerade, indem ich alle Forenberechtigungen nochmal überarbeite, damit verschwand nun nach nur einem geringen Teil des Forums die Fehlermeldung
Meine Frage nun.. mit welcher MySQL-Abfrage kann ich das Ganze direkt für alle Foren eines bestimmten Forums ausführen, damit ich mich nun nicht dumm und dämlich klicke?
Edit: Um mich deutlicher auszudrücken..
Wie kann ich die eigenen Berechtigungen aus einzelnen Foren für alle darin liegenden Foren zurücksetzen?
.. Wenn man es überhaupt kann.
Ich bin ja schon froh, habe ich die Fehlermeldung beseitigt.
(30.08.2013, 18:58)melancholia schrieb: [ -> ]Meine Frage nun.. mit welcher MySQL-Abfrage kann ich das Ganze direkt für alle Foren eines bestimmten Forums ausführen, damit ich mich nun nicht dumm und dämlich klicke?
Ich denke, das ist auch direkt über die Datenbank mühsam, weil Du zunächst für jedes (einzelne) Forum die gewünschten Einstellungen festlegen muss. Danach kannst Du jeweils ein MySQL-Query pro fid ausführen. Entsprechende Hinweise kannst Du
diesem Thema entnehmen.
Ich hab mich mal umgesehen in der Datenbank und ich denke, ich mache es manuell.. da weiss ich, was ich tue und so wie es aussieht ist es wirklich ähnlich mühsam.
Jedenfalls möchte ich mich bei alle bedanken, die mir versucht haben zu helfen
.. auch wenn ich am Ende mal wieder komplizierter gedacht hab als nötig und nun eine Heidenarbeit hab, aber es läuft wieder.
Exakt auf genau den gleichen Fehler bin ich heute leider auch gestoßen als ich neue Foren angelegt habe. Ist es möglich, daß dadurch, daß zwei Personen gerade in der Forenverwaltung dabei waren, Foren zu erstellen, irgend etwas zu Schaden gekommen ist?
Wenn ich jetzt Berechtigungen bearbeiten will, bekomme ich überall
Zitat:Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 6995573 bytes) in .../inc/db_mysql.php on line 861
Und den gleichen Fehler auch bei dem Erstellen weiterer Foren, auch wenn diese trotzdem angelegt werden.
Hilft es denn, die Berechtigungen sämtlicher Foren noch einmal abzuspeichern, wie von melancholia ausprobiert?
Am einfachsten wäre es das Memory-Limit zu erhöhen...
Jaa, das kann halt nur der Provider - und der wird sicherlich wissen wollen, weshalb ich denn so viel Speicher brauche, wenn es doch nur ein einfaches Forensystem ist... und eigentlich hat er damit natürlich vollkommen recht.
Also, in Zeile 861 geht es darum, einen string kompatibel zu formatieren:
Code:
$string = mysql_real_escape_string($string, $this->read_link);
In Funktion:
Code:
function escape_string($string)
{
if($this->db_encoding == 'utf8')
{
$string = validate_utf8_string($string, false);
}
elseif($this->db_encoding == 'utf8mb4')
{
$string = validate_utf8_string($string);
}
if(function_exists("mysql_real_escape_string") && $this->read_link)
{
$string = mysql_real_escape_string($string, $this->read_link);
}
else
{
$string = addslashes($string);
}
return $string;
}
Wenn das der letzte Punkt ist, bevor das Skript ausgestiegen ist, handelt es sich eventuell um eine Art Endlosschleife wegen $irgendwas? Wäre natürlich interessant zu wissen, wo er denn vorher gewesen ist (irgendwo im forum-management ADD oder EDIT eben...).
Ich würde schätzen, das letzte, was er da jeweils tut ist, Berechtigungen wegzuschreiben? Was genau macht er da und macht er das in einer Schleife?
Du kannst dir lange irgendwelche Code-Zeilen anschauen, aber wo der viele Speicher gebraucht wird, sagt die Fehlermeldung gar nicht aus. Das müsste man genauer analysieren, wozu mir allerdings gerade die Zeit fehlt.
Das mußt Du ja gar nicht, ich bin doch froh, wenn ich einfach ein paar Hints bekomme, die mich wieder ein Stück weiterbringen. Falls eben solche in den Sinn kommen sollten.
Ich hab mal weiter analysiert. Ich glaube, das Problem liegt daran, daß der forumspermissions-cache eine Größe von 3,16 MB beträgt. Der kann nämlich als einziger nicht im ACP Cache-Manager erneuert werden (keine Rückmeldung und beim Ansehen des Caches bekannte Fehlermeldung) und das erscheint mir schon ganz schön groß.
Ist das eine normale Größe? Oder ist da was komplett verkehrt? Alle anderen liegen so im Byte/KB Bereich.
Okay. Ich habe jetzt
(- von 1.6.12 auf 1.6.13 upgegraded)
- den Cache in der Datenbank manuell auf leer gesetzt:
Code:
update `mybb_datacache`
set `cache` = 'a:0:{}' where `title` = 'forumpermissions'
- alle Forenberechtigungen außer bestimmten Gruppen gelöscht:
Code:
delete from mybb_forumpermissions where gid NOT in (4,6,3)
- einen index auf gid angelegt
- den cache "forumpermissions" im Cache-Manager nun erfolgreich erneuern können
Und nun funktioniert es wieder. Ich weiß nicht so wirklich, weshalb dem System 1038 Forenpermissioneinträge in der Tabelle zu viele waren, aber ganz offensichtich ist dem so. Ich werde die Berechtigungen nun beim Neuanlegen wohl sehr sparsam planen müssen.