Projekt

Allgemein

Profil

Aktionen

Bug #191

offen

[Bugsink] ErrorException: Warning: unlink(/srv/www/www.verl.de/pages/public/typo3temp/assets/tx_staticfilecache/https_www.verl.de_443/service/abfallentsorgung/…

Von Bug Sink vor etwa 1 Monat hinzugefügt.

Status:
Neu
Priorität:
wichtig
Zugewiesen an:
-
Beginn:
11.09.2026
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/803a971f-ff26-484a-a9dc-a84ae6acc79f/event/last/

Typ: NEW issue

Projekt: www-verl-de

Bugsink Alert

ErrorException: Warning: unlink(/srv/www/www.verl.de/pages/public/typo3temp/assets/tx_staticfilecache/https_www.verl.de_443/service/abfallentsorgung/…


Automatisch erstellt durch n8n

KI-Analyse:

Analyse des Fehlers

1. Ursache identifizieren

Der Fehler stammt aus der staticfilecache-Extension (tx_staticfilecache). Der Pfad typo3temp/assets/tx_staticfilecache/... ist eindeutig diesem Extension-Ordner zuzuordnen.

Root Cause: Die staticfilecache-Extension versucht, eine Cache-Datei (index.config.json) per unlink() zu löschen, die bereits nicht mehr existiert. Das passiert typischerweise in folgenden Szenarien:

  • Race Condition: Zwei parallele Requests versuchen denselben Cache-Eintrag zu bereinigen. Der erste Request löscht die Datei, der zweite findet sie bereits nicht vor.
  • Teilweises Cache-Invalidation: Beim Cache-Löschen (z.B. über den Seitenbaum, Cache-Flush per CLI oder bei Seitenänderungen) werden Dateien inkonsistent bereinigt – manche schon, manche noch nicht.
  • Fehlende Guard-Check: Der unlink()-Aufruf im Staticfilecache ist nicht durch file_exists() oder is_file() geschützt. Das erzeugt ein PHP Warning, welches von TYPO3s Error-Handler zu einer ErrorException gewandelt wird.

2. Fix (konkret)

Datei: typo3conf/ext/staticfilecache/Classes/Cache/... (je nach Version z.B. CacheManager.php oder Cache.php)

Änderung: Vor dem unlink()-Aufruf eine Existenzprüfung einfügen:

// ALT (fehleranfällig):
unlink($cacheFile . '/index.config.json');

// NEU (sicher):
if (is_file($cacheFile . '/index.config.json')) {
    unlink($cacheFile . '/index.config.json');
}

Alternativ:

@unlink($cacheFile . '/index.config.json'); // @ unterdrückt Warning (nicht ideal)

Oder als ganzheitlicher Fix: Die gesamte Bereinigungslogik durchsuchen und sicherstellen, dass alle unlink()-Aufrufe durch file_exists()/is_file()-Checks geschützt sind. Zusätzlich empfehle ich den clearstatcache()-Aufruf vor der Prüfung, um Dateisystem-Cache-Probleme zu vermeiden:

clearstatcache(true, $filePath);
if (file_exists($filePath)) {
    unlink($filePath);
}

Empfehlung: Falls ein Update der Extension verfügbar ist (z.B. staticfilecache ≥ v10+), prüfen, ob der Bug dort bereits behoben wurde.

3. Betroffene TYPO3 Extension

staticfilecache (tx_staticfilecache) — die Static-File-Cache-Extension für TYPO3.

4. Confidence

95%

Begründung: Der Pfad tx_staticfilecache im typo3temp/assets/-Ordner ist ein eindeutiger Fingerabdruck dieser Extension. Das Fehlen einer file_exists()-Prüfung vor unlink() ist ein klassischer Bug-Pattern bei File-Cache-Implementierungen. Die Fehlermeldung bestätigt, dass genau diese Datei nicht gefunden werden kann, weil sie bereits gelöscht wurde oder nie existierte (z.B. bei teilweiser Cache-Erstellung).

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF