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.

Cache-Ordner in einem neu aufgesetzten Joomla 3 oder 4

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äre diesda/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.

Wanmeldung beim Speichern des neuen Cache-Pfades. Er fehlt oder ist tatsächlich nicht beschreibbar für Joomla(?)

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.

In der Joomla-Konfiguration eigenen Cache-Ordner im Feld eintragen und 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...

In den Systeminformationen (Verzeichnisrechte) der (hoffentlich) beschreibbare neue Caching-Ordner. Der zweite wird nicht mehr angezeigt.

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.