Repository source: docs/plans/guided_php_setup_fallback/guided_php_setup_fallback_step4_implementation_summary.md
Stage 1 - Platform aware manual setup guidance
Changes: Extended the startup recovery message with PATH-first guidance, bounded Ubuntu 24.04/APT recognition, manual PHP 8.3 CLI/SQLite/mbstring instructions, privilege explanation, and generic fallback. Added an internal Bash helper that parses release fields without executing them; expanded README setup recovery. Grouped the four plans and updated the index.
Verification:
bash -n v3 scripts/php_setup_guidance.sh, existingbash tests/missing_php_startup_test.sh, andgit diff --checkpassed. Direct./v3 start </dev/nullon this missing-PHP Ubuntu host returned exit 1 with supported instructions. Supported, older-release, duplicate-ID, and absent-file fixtures selected expected advice. Official Ubuntu package references in Step 3 confirm the recipe family; locally extracted package contents includepdo_sqlite.soandmbstring.so.Notes: Guidance only prints commands; it does not install, prompt, modify PATH/profiles, or retry. Server source remains unchanged. The separate dependency checklist remains uncommitted and outside feature commits. Deployment, system package installation, and migrations are not applicable to manual guidance.
Stage 2 - Detection failures and recovery verification
Changes: Extended the standalone launcher test with quoted release fixtures, unsupported distributions/releases/kernels, duplicate/missing/malformed fields, read failure, kernel detection failure, missing APT, piped invocation, and installer stand-ins that record any unexpected execution. Retained all original forwarding/help checks.
Verification:
bash tests/missing_php_startup_test.sh,bash -n v3 scripts/php_setup_guidance.sh tests/missing_php_startup_test.sh, andgit diff --checkpassed. Piped startup exited with guidance and no installation marker. Restoring the extracted temporary PHP runtime and running startup with a numeric port, quiet mode, and log path containing spaces yielded HTTP 200 for/assets/site.css; the server and temporary request state were cleaned up. All relative feature-plan links resolve.Notes: The smoke test proves actual server startup and asset serving, not dynamic application data configuration. Fixture tests call the internal helper; actual launcher tests cover wiring and missing-PHP/available-PHP behavior. No system packages were installed. Full PHP application tests, deployment, migrations, and external services are not required for this guidance-only runtime change.