Bug #261
offen[Bugsink] ErrorException: Warning: filesize(): stat failed for /srv/www/www.verl.de/pages/public/uploads/tx_powermail/1qp45sm3l
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/6977eed0-3b04-41bc-a67d-3508817b9fd4/event/last/
Typ: NEW issue
Projekt: www-verl-de
Bugsink Alert
ErrorException: Warning: filesize(): stat failed for /srv/www/www.verl.de/pages/public/uploads/tx_powermail/1qp45sm3l
Automatisch erstellt durch n8n
KI-Analyse:
Analyse des Fehlers¶
1. Ursache identifizieren¶
Der Fehler entsteht durch einen Aufruf von filesize() auf eine Datei, die nicht existiert oder nicht zugreifbar ist:
/srv/www/www.verl.de/pages/public/uploads/tx_powermail/1qp45sm3l
Konkrete Ursache:
Die Datei 1qp45sm3l (wahrscheinlich ein temporärer Upload-Hash-Name von powermail) ist zum Zeitpunkt des filesize()-Aufrufs nicht mehr vorhanden. Dies kann folgende Gründe haben:
- Race Condition: Die Datei wurde hochgeladen, aber zwischen dem Speichern der Datei und dem Verarbeitungsaufruf wurde sie gelöscht (z.B. durch Garbage Collection, Upload-Timeout oder Server-Restart)
- Inkompatible Bereinigung: Ein Cron-Job oder TYPO3-Cleanup hat die Datei entfernt, während der Formularversand noch in Bearbeitung war
- Unvollständiger Upload: Die Datei wurde nicht vollständig hochgeladen, der temporäre Speicher wurde geleert
-
Fehlende
is_file()/file_exists()-Prüfung: Der powermail-Code ruftfilesize()auf, ohne vorher zu prüfen, ob die Datei überhaupt existiert
2. Fix (konkret)¶
Betroffene Stelle: Im Code der Extension powermail, wo filesize() auf den temporären Upload-Pfad zugreift – vermutlich in einer Klasse, die E-Mail-Anhänge verarbeitet oder Dateigrößen validiert.
Konkrete Maßnahmen:
-
Direkte Absicherung des Aufrufs – Vor dem
filesize()-Aufruf prüfen:if (is_file($filePath) && is_readable($filePath)) { $size = filesize($filePath); } else { // Fehlerbehandlung: Datei nicht vorhanden, Log-Eintrag, Graceful Fallback $this->logger->warning('File not found or not readable: ' . $filePath); return null; // oder alternativen Wert } -
Temporäre Uploads bereinigen: Sicherstellen, dass der
uploads/tx_powermail/-Ordner regelmäßig auf verwaiste Dateien geprüft wird (z.B. über ein Scheduler-Task oder den eingebauten powermail-Upload-Cleanup-Mechanismus). -
TYPO3 File Abstraction Layer (FAL) nutzen: Statt direkt auf Dateisystem-Pfade zuzugreifen, sollten FAL-Methoden verwendet werden, die fehlende Dateien sauber behandeln:
$file = $this->fileRepository->findByIdentifier($fileUid); if ($file && $file->exists()) { $size = $file->getSize(); } -
@filesize()als Workaround (nur temporär, nicht als Best-Practice):$size = @filesize($filePath); if ($size === false) { // Fehlerbehandlung }
3. Betroffene TYPO3 Extension¶
powermail (Extension-Key: tx_powermail)
- Dies ist die bekannte TYPO3-Formular-Extension von der Agentur
in2code - Die Pfade
tx_powermailin der Dateipfade bestätigen dies eindeutig
4. Confidence¶
85%
- Die Zuordnung zu
powermailist sehr hoch (Pfad enthälttx_powermail) - Die Art des Fehlers (
filesize(): stat failed) ist ein klassisches powermail-Problem bei fehlenden temporären Upload-Dateien - Die genaue Ursache (Race Condition vs. Garbage Collection vs. unvollständiger Upload) kann ohne weitere Logs nicht zu 100% bestimmt werden
Empfehlung: Im ersten Schritt die vendor/typo3/cms-core Pfade durchsuchen nach dem konkreten filesize()-Aufruf, der den Fehler auslöst (die Stack-Traces zeigen die TYPO3-Kernel-Mittelware, aber nicht die eigentliche powermail-Logik). Die relevante Datei liegt wahrscheinlich in typo3conf/ext/powermail/Classes/Domain/Upload/ oder typo3conf/ext/powermail/Classes/Service/.
Nichts anzuzeigen