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/…
0%
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 durchfile_exists()oderis_file()geschützt. Das erzeugt ein PHPWarning, welches von TYPO3s Error-Handler zu einerErrorExceptiongewandelt 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