Worker Mode regression in 1.13.0: Nextcloud worker fails to reach frankenphp_handle_request()
Maintainer antworten meist innerhalb von 1 Tag
Ein zugehöriger Pull Request wurde bereits gemerged.
- #2701 von @dunglas — gemerged
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
Rechercherichtung
Start by comparing the worker initialization path between FrankenPHP 1.12.7 and 1.13.0; the issue does not identify specific source files or tests. Reproduce with the provided Nextcloud worker configuration and PHP ZTS 8.4.26, then inspect startup logs to locate where the worker fails to reach frankenphp_handle_request(). Done means the same configuration starts successfully on 1.13.0.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
What happened?
After upgrading FrankenPHP from 1.12.7 to 1.13.0, an existing Nextcloud Worker Mode configuration no longer starts.
FrankenPHP 1.13.0 fails during worker initialization:
loading new config: frankenphp app module: start: failed to initialize workers: too many consecutive failures: worker /var/www/nextcloud/index.php has not reached frankenphp_handle_request()
Downgrading only FrankenPHP to 1.12.7 immediately restores normal operation with the same Nextcloud installation, PHP ZTS version and Caddyfile.
Environment
Debian 13, amd64
Nextcloud 35.0.1
PHP ZTS 8.4.26
php-zts-cli: 8.4.26-2
php-zts-embed: 8.4.26-2
Working: FrankenPHP 1.12.7
Failing: FrankenPHP 1.13.0
FrankenPHP 1.13.0 package: 1.13.0+php84-1
Caddy bundled with 1.13.0: 2.11.7
Package source: pkg.henderkes.com
Package SHA256: 3388c67c70f5de50e01270fa853ca6f688370fe094541d058b046489d228c792
frankenphp version for the failing package:
FrankenPHP v1.13.0 PHP 8.4 Caddy v2.11.7 h1:yj0Y4fYZGPkSvibBJ1sTWE33xC0fxztVyXEW5iIdUT4=
Caddyfile
{
frankenphp {
num_threads 17
max_threads 32
}
}
https://cloud-franken.domain.local {
bind 192.168.168.168
root * /var/www/nextcloud
tls /etc/frankenphp/tls/fullchain.crt /etc/frankenphp/tls/cloud-franken.key
encode zstd br gzip
php_server {
worker {
file /var/www/nextcloud/index.php
num 8
env MAX_REQUESTS 500
}
}
}
Reproduction
With exactly the same configuration:
FrankenPHP 1.12.7 + PHP ZTS 8.4.26-2 -> works
FrankenPHP 1.13.0 + PHP ZTS 8.4.26-2 -> worker initialization fails
FrankenPHP 1.12.7 + PHP ZTS 8.4.26-2 -> works again after downgrade
With 1.13.0:
ExecStartPre=/usr/bin/frankenphp validate --config /etc/frankenphp/Caddyfile
(code=exited, status=0/SUCCESS)
ExecStart=/usr/bin/frankenphp run --environ --config /etc/frankenphp/Caddyfile
(code=exited, status=1/FAILURE)
Status: "loading new config: frankenphp app module: start: failed to initialize workers: too many consecutive failures: worker /var/www/nextcloud/index.php has not reached frankenphp_handle_request()"
PHP ZTS and Nextcloud initialize correctly independently:
sudo -u www-data php-zts /var/www/nextcloud/occ status
returns Nextcloud 35.0.1 with maintenance: false and needsDbUpgrade: false.
An Argon2id password_hash() / password_verify() test on PHP ZTS 8.4.26 also succeeds.
The failure is therefore reproducible by changing only FrankenPHP from 1.12.7 to 1.13.0.
Please let me know if debug-level startup logs or additional diagnostics would help.
Build Type
deb packages
Worker Mode
Yes
Operating System
GNU/Linux
CPU Architecture
x86_64
PHP configuration
phpinfo() output
PHP 8.4.26 ZTS
php-zts-cli 8.4.26-2
php-zts-embed 8.4.26-2
memory_limit = 1024M
opcache.enable = On
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 32
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = On
opcache.revalidate_freq = 60
opcache.jit = disable
realpath_cache_size = 4096K
realpath_cache_ttl = 120
session.save_handler = files
session.save_path = /var/lib/php/sessions
session.use_cookies = On
session.use_only_cookies = On
session.use_strict_mode = Off
Loaded extensions include:
apcu, bcmath, bz2, curl, gd, gmp, imagick, intl, ldap,
mbstring, openssl, pdo_pgsql, pgsql, redis, sodium, zip
Relevant log output
Relevant log output
- Vorherrschende Sprache
- Go
- Sterne
- 11.4k
- Forks
- 494
- Ø Merge
- 2 T. 18 Std.
- Gemergte PRs (30 T.)
- 32
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus php/frankenphp
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
php/frankenphp#2671 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Include frankenphp version in logsEvtl. vergeben @ousamabenyounes hat das vor 87 Tagen übernommen. Offenenhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
php/frankenphp#2483 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
suggestion about compile.mdEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offenenhancement
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 68/100
php/frankenphp#601 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 15/100
php/frankenphp#2715 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 8/100
php/frankenphp#2714 ·
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 81/100
apache/rocketmq-dashboard#6895 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
agent-butler-finding chore
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
jordansmall/spindrift#5466 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 87/100
777genius/agent-notifications#490 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
devantler-tech/ksail#7836 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
keyxmakerx/Chronicle#1469 ·
Maintainer antworten meist innerhalb von 1 Tag