Projekt

Allgemein

Profil

Aktionen

Bug #223

offen

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

Von Bug Sink vor etwa 1 Monat hinzugefügt.

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

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/5c82845c-3799-48d2-81b4-77221e9d4a21/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/_2527_2522


Automatisch erstellt durch n8n

KI-Analyse:

1. Ursache identifizieren
Die Warnung entsteht beim Aufruf von filesize() für den Pfad

/srv/www/www.verl.de/pages/public/uploads/tx_powermail/_____2527_2522____

Der Dateiname besteht nur aus Unterstrichen und Zahlen – er entspricht keinem tatsächlich hochgeladenen Dateinamen.
In der TYPO3‑Extension powermail wird beim Versand von Formular‑E‑Mails (Finisher Mail) die Größe der angehängten Datei mittels filesize() ermittelt, um den entsprechenden Header (Content‑Length) zu setzen oder das File‑Attachment zu construire.
Wenn der Upload‑Prozess fehlschlägt (z. B. wegen falscher Rechte, Überschreitung des upload_max_filesize oder weil die Datei nach dem Verschieben/temporären Speichern bereits gelöscht wurde), bleibt der Pfad in der Datenbank bzw. im $_FILES‑Array erhalten, aber die physische Datei existiert nicht mehr. Beim anschließenden Aufruf von filesize() liefert PHP die Warnung stat failed.

2. Fix beschreiben (konkret)

Schritt 1 – Prüfung vor dem Aufruf:
In allen Stellen, wo filesize() auf eine von Powermail verwaltete Datei angewendet wird, muss zuerst geprüft werden, ob die Datei tatsächlich existiert und lesbar ist.

// Beispiel aus EXT:powermail/Classes/Finisher/MailFinisher.php (oder ähnliche Klasse)
$filePath = $this->getUploadedFilePath();   // liefert den Pfad aus DB/_FILES

if (is_file($filePath) && is_readable($filePath)) {
    $fileSize = filesize($filePath);
    // ggf. Header setzen oderAttachment‑Daten erzeugen
    $attachmentSize = $fileSize;
} else {
    // Datei fehlt oder ist nicht lesbar – sicherer Fallback
    $fileSize = 0;
    // Optional: Log‑Eintrag, damit Admin das Problem sehen kann
    $this->logger->warning(
        'Powermail: Attempted to get filesize of non‑existent file',
        ['filePath' => $filePath]
    );
}

Schritt 2 – Ursache des fehlenden Files beheben (optional, aber empfohlen):

  • Sicherstellen, dass der Upload‑Ordner (uploads/tx_powermail/) vom Web‑Server‑User beschreibbar ist (chmod 0755 bzw. 0775 und richtige Gruppe/Owner).
  • upload_max_filesize und post_max_size in php.ini ausreichend hoch setzen.
  • Falls das File nach dem Verschieben (move_uploaded_file()) sofort gelöscht wird, prüfen, ob das Verschieben tatsächlich erfolgreich war (if (!move_uploaded_file(...)) { /* Fehler behandeln */ }).

Schritt 3 – Falls die Warnung nur in einem Entwicklungs‑/Test‑System auftreten soll, kann man die Warning mittels @filesize() unterdrücken – jedoch ist das nur ein Notbehelf und ersetzt nicht die eigentliche Prüfung.

3. Betroffene TYPO3‑Extension nennen
Die Fehlermeldung stammt aus der Extension powermail (Typo3‑Extension‑Key: tx_powermail). Genauer gesagt aus dem Finisher, der E‑Mails mit Anhängen versendet (z. B. Classes/Finisher/MailFinisher.php oder einer ähnlichen Klasse, die filesize() auf eine hochgeladene Datei anwendet).

4. Confidence (0‑100 %)
95 % – Die Analyse basiert auf dem klar erkennbaren Pfad‑Muster (uploads/tx_powermail/), dem Kontext (Middleware‑Stack einer Standard‑TYPO3‑Anfrage) und dem bekannten Verhalten von Powermail beim Anhängen von Dateien. Die einzigen Unsicherheitsfaktoren wären etwaige eigene Erweiterungen, die ebenfalls filesize() auf Powermail‑Uploads zugreifen, doch selbst in diesem Fall liegt die Verantwortung weiterhin bei der Powermail‑Logik, weshalb die Wahrscheinlichkeit sehr hoch ist.

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF