Projekt

Allgemein

Profil

Aktionen

Bug #261

offen

[Bugsink] ErrorException: Warning: filesize(): stat failed for /srv/www/www.verl.de/pages/public/uploads/tx_powermail/1qp45sm3l

Von Bug Sink vor etwa 1 Monat hinzugefügt.

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

0%

Geschätzter Aufwand:

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 ruft filesize() 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:

  1. 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
    }
    
  2. 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).

  3. 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();
    }
    
  4. @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_powermail in der Dateipfade bestätigen dies eindeutig

4. Confidence

85%

  • Die Zuordnung zu powermail ist sehr hoch (Pfad enthält tx_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

Aktionen

Auch abrufbar als: Atom PDF