Eigenen Cache-Ordner verwenden statt Joomlas /cache/ (Stand: Joomla 3 und 4)
Wer im Backend einen Blick in das Menü System > Systeminformationen > Tabulator "Verzeichnisrechte" wirft, findet in einem Standard-Joomla Angaben zu den zwei aktuellen Cache-Ordnern. Normalerweise wird im Frontend der Ordner /cache/
und im Backend das Verzeichnis /administrator/cache/
verwendet (bis Joomla 3). Man kann aber auch seinen eigenen Ordner festlegen.
Beachten
Man sollte nicht annehmen, dass der eigene Cacheordner von Joomla selbst oder Erweiterungen tatsächlich immer verwendet wird. So kann es passieren, dass man im Backend unter "Cache leeren" zwar immer den eigenen Ordner leert, aber Cachedateien einer zuinstallierten Erweiterung nicht mitgenommen werden, weil diese Erweiterung vielleicht den alten, traditionellen Pfad verwendet.
Alle drei folgenden Varianten gehen davon aus,
- ...dass Sie einen absoluten Serverpfad eingeben. Also
/www/htdocs/xyz/ghsvs.de/diesda/meincacheordner
und nicht den relativen Pfad ohne das einleitende/
-Gedöns. Falsch wärediesda/meincacheordner
. Meist kann man sich in den Feldern "Protokollverzeichnis" und "Tempverzeichnis" der Joomla-Konfiguration orientieren, wie der absolute Pfad der Webseite lautet. - ...dass der Pfad KEINEN endenden Schrägstrich (
/
) haben darf. Zumindest in Joomla 4 wird er sonst sofort aus dem Feld gelöscht. - ...dass Sie den neuen Caching-Ordner bereits angelegt haben - z.B. per FTP - da Joomla sonst mit einer (gelegentlich inhaltlich falschen) Meldung daher kommen könnte. Schreibgeschützt war der Ordner in meinem Beispiel nicht, sondern existierte einfach noch nicht:
Das Verzeichnis „/www/htdocs/xyz/ghsvs.de/diesda/meincacheordner“ ist schreibgeschützt und kann nicht für den Zwischenspeicher (Cache) verwendet werden. Es wird stattdessen das Standardverzeichnis „/www/htdocs/xyz/ghsvs.de/cache“ verwendet.
Je nach weiteren Cache-Einstellungen kann es sein, dass der "falsche" Pfad aus der configuration.php
wieder gelöscht wird.
Beachten Sie weiterhin
Im Joomla-Core wird Ihr selbst eingetragener Ordner immer für Cacheangelegenheiten verwendet werden, also auch unter System > Cache leeren, aber leider gibt es immer mal wieder schlampig programmierte bzw. veraltete Erweiterungen, die die "traditionellen" Ordner cache
und/oder administrator/cache
verwenden. Sie sollten deshalb diese beide Ordner nicht aus dem Joomla-Verzeichnis löschen und beobachten.
Aaaber, etwas verfrühte und generelle Abschweifung: ich will nicht zu fies sein: Es gibt auch Szenarien, wo Erweiterungen ein berechtigtes Interesse haben NICHT den Ordner administrator/cache
zu verwenden, der in Joomla 4 vom System bevorzugt wird. Wenn das administrator
-Verzeichnis durch einen Verzeichnisschutz per .htaccess
abgesichert ist, wären z.B. gecachte Bilder darin für den Browser nicht mehr abrufbar. Deshalb sollte die Erweiterung, die solcherlei Dateien ablegt, besser den /cache/
-Ordner außerhalb verwenden und nicht Joomlas Lieblingsordner. Es gäbe aber für die Erweiterung ebenso die Möglichkeit eine weitere .htaccess
zu hinterlegen, die den administrator
-Verzeichnisschutz aushebelt. Und noch ein Aber plus ein Leider: Manch Provider macht einem das nicht immer leicht, das Aushebeln.
Und, noch mehr Konfusion(?) und Abschweiferei-Blah-Blah: In Joomla 4 sieht man einen Ordner /media/cache/
. Eigentlich wäre der ideal für so Problemfälle. Aber, ich glaube zumindest, in Joomla 4.2.6 hat der noch keine Verwendung und wird auch nicht aus dem Backend geleert(?). Wäre schön.
Zurück zum Thema "Eigener Cache-Ordner":
Variante 1 seit Joomla 3.7.0 (und spätere Joomla-3-Versionen)
In Ihrer Joomla-3-Administration finden Sie unter System > Konfiguration > Tabulator "System" > das Eingabefeld "Cache-Verzeichnis". Hier müssen Sie den Pfad zum gewünschten Cache-Ordner eingeben und die Konfiguration speichern.
Damit wird diese Zeile in der Datei configuration.php
eintragen.
public $cache_path = '/www/htdocs/xyz/ghsvs.de/diesda/meincacheordner';
Variante 2 vor Joomla 3.7.0
Öffnen Sie die Datei configuration.php
in einem geeigneten Text-Editor (z.B. Notepad++), prüfen Sie, ob ein Eintrag $cache_path
schon existiert. Dann passen Sie ihn wie oben zu sehen an. Falls er noch nicht vorhanden ist, tragen Sie ihn nach.
Variante 3 ab Joomla 4
Joomla 4 verwendet bevorzugt den Ordner /administrator/cache
, auch im Frontend. So ganz konsequent/konsistent wird das aber nicht durchgezogen. Auch ist keinesfalls gewährleistet, dass Joomla 4 immer den selbst definierten Cache-Ordner verwendet.
Grundlegend hat sich nichts geändert im Vergleich mit Variante 1. Allerdings sieht man das Einstellfeld "Cache-Verzeichnis" in der Konfiguration nicht, falls der Cache gar nicht aktiviert ist. Das war etwas übereifrig gedacht bei dieser "Optimierung".
- Aktiviere erst den Cache, falls er nicht schon aktiv ist: Setze ihn auf "AN".
- Trage dann den Cache-Pfad in das Feld ein.
- Deaktiviere dann den Cache wieder, falls er zuvor deaktiviert war: Setze ihn auf "AUS".
- Speichere danach die Konfiguration.
Blöd daran ist natürlich, dass man es im Kopf haben muss, dass man den Pfad umgestellt hat. Man sieht das nicht so offensichtlich in der Konfiguration wie unter Joomla 3.
Ergebnis und Prüfung desselben
In der Joomla-3-Administration sehen Sie nun unter System > Systeminformationen > Tabulator "Verzeichnisrechte" nur noch einen Cache-Ordner, statt zuvor zwei, da Ihr neuer sowohl für Front- als auch Backend verwendet wird.
In Joomla 4 müssen Sie gegebenenfalls erst dumm rumsuchen, bevor Sie die Ecke Systeminformationen finden. Vielleicht unter System > dumm rumsuchen > Link "Systeminformationen" klicken.
Prüfen Sie auch die Schreibrechte, die "Beschreibbar" lauten sollten. Falls nicht: Andere Baustelle...
Cache-Pfad in eigener Erweiterung oder eigenem Code holen
Zumindest in Joomla 4 kann man den eingestellten Pfad z.B. so abfragen
$cachePfad = \Joomla\CMS\Factory::getApplication()->get('cache_path', JPATH_CACHE);
Es wird zuerst "nachgesehen", ob das Konfigurations-Feld für den eigenen Cachepfad einen Eintrag enthält (cache_path
) und, wenn nicht, wird der genommen, den Joomla bevorzugt; was der Wert der Joomla-PHP-Konstante JPATH_CACHE
ist, die zuvor in der includes/defines.php
"gebastelt" wurde.