Bug #223
offen[Bugsink] ErrorException: Warning: filesize(): stat failed for /srv/www/www.verl.de/pages/public/uploads/tx_powermail/_____2527_2522____
0%
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 0755bzw.0775und richtige Gruppe/Owner). -
upload_max_filesizeundpost_max_sizeinphp.iniausreichend 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