€0.00 — free as in speechtonight's forecast: clear skies over production Cache: warm · Deploys: fair, 0% rollbacks expectedset by moonlight, shipped before dawn · deploy freely Page A2

The Daily Commit The Nightly Build

Dev news, typeset daily — PHP · AI · The Wider Stack

The developer's evening paper — PHP · AI · The Wider Stack

Mittwoch, 9. September 2026 Vol. I — No. 510 · MorgenausgabeSpätausgabe EN DE FR ES

PHP · Releases

FrankenPHP 1.12.7 behebt verlorene Ausgabe nach finish_request()

FrankenPHP 1.12.7 ist erschienen.

kuratiert von Sönke

Das Patch-Release behebt einen Fehler im Classic-Modus, bei dem Ausgaben nach fastcgi_finish_request() still verworfen wurden, korrigiert eine Thread-Metrik, reduziert Logging bei Client-Abbrüchen und entfernt einen Opcache-Neustart-Hook.

FrankenPHP 1.12.7 behebt verlorene Ausgabe nach finish_request()
Screenshot: FrankenPHP Releases ↗

FrankenPHP 1.12.7 erschien am 7. August und behebt fünf Fehler sowie eine Dokumentationslücke.

Die wichtigste Korrektur betrifft den klassischen Modus ohne Worker. Bislang verschwanden Ausgaben spurlos, wenn ein Skript nach dem Aufruf von fastcgi_finish_request() oder frankenphp_finish_request() noch etwas ausgab. Da ignore_user_abort standardmäßig aktiv ist, wertete die Laufzeitumgebung ein späteres echo fälschlich als Hinweis auf einen Verbindungsabbruch und brach das Skript mittendrin ab. Kévin Dunglas schloss das Problem mit Pull Request #2569 und damit Issue #2548.

Erstbeitrag von @ousamabenyounes: Die Metrik frankenphp_total_threads zählte bislang nur hoch, statt die aktuelle Thread-Zahl zu melden, und stieg dadurch unbegrenzt. Sie funktioniert nun als echtes Gauge (#2550, behebt #2481).

@AlliBalliBaba entfernte den Restart-Hook bei Opcache-Invalidierung erneut. Ein Neustart bei jedem Opcache-Reset hätte bei Frameworks mit häufiger Cache-Invalidierung zu rekursiven Neustarts führen können (#2564).

Dunglas senkte außerdem das Log-Level für routinemäßige Schreib- und Flush-Fehler bei Client-Abbrüchen von Warn- auf Debug-Stufe und passte FrankenPHP damit an das Verhalten von Caddy und Mercure an. Die Meldungen tragen zudem nicht mehr die falsche Bezeichnung „not a flusher" (#2589).

Beim Build sorgt @henderkes dafür, dass go.sh die Umgebungsvariable PHP_CONFIG berücksichtigt (#2557). Die Dokumentation erklärt jetzt, warum die Wartezeit nach einem erzwungenen Kill unbegrenzt bleiben muss (#2577).

Der vollständige Changelog von v1.12.6 bis v1.12.7 steht auf GitHub bereit.

Originalquelle lesen (Englisch) ↗

Artikel bewerten: 0

Leserforum

Noch keine Beiträge — eröffne die Debatte.

The Daily CommitThe Nightly Build — Page A1