Repository navigation
PHP 8.6: Complete the image set once upstream support lands #100
Description
Tracking issue for completing the PHP 8.6 image set. Apache and CLI RC images were added in #99. The RC functionality in sections 1–3 is implemented and locally verified in #102, which is still open as of 2026-10-13. Checked items below mean implementation and local verification, not a merged release or confirmed Docker Hub publication.
During the RC phase, functional dev/alpha/beta versions are acceptable; do not wait for stable releases to restore functionality.
1. memcached extension
- Re-enable memcached and its build/runtime dependencies in both PHP 8.6 Dockerfiles (PHP 8.6: Restore memcached and add debug images #102).
- Verify compilation and runtime functionality on PHP 8.6 RC3, including data and PHP session round trips.
PIE 1.5.2 runs on PHP 8.6. Stable memcached 3.4.0 does not compile against the changed PHP APIs, so the images use php-memcached/php-memcached:dev-master (reports 3.4.1dev), containing php-memcached-dev/php-memcached#580.
2. -debug variant (Xdebug + SPX)
- Add
php/Dockerfile-8.6-debugand the debug build/tag/push flow, including RC-specific tags (PHP 8.6: Restore memcached and add debug images #102). - Verify Xdebug 3.6.0alpha1 on PHP 8.6 RC3, including trace generation.
- Verify SPX from
0.5.x-dev, including the web UI and HTTP profiling reports. - Run the extension test suite in Apache, CLI, and debug images: 23 tests in each, with one expected skip for the older PDO API.
Xdebug uses ^3.6@alpha; SPX uses 0.5.x-dev from the upstream v0.5 branch. SPX currently requires two temporary compiler flags: -Wno-error=old-style-declaration and -Dtypeof=__typeof__. CI=true separately prevents CPU-specific compilation via -march=native.
The debug Dockerfile uses the bundled frontend: in the tested Docker environment the external frontend resolved the published base instead of the freshly built local image. Copilot's finding in #102 is valid: printing loaded extensions and skipping tests for missing modules does not enforce the expected inventory. A separate follow-up is being designed on php-test-ext; it is not part of #102.
3. Working pie binary inside the RC images
- Refresh
php/build/pie.pharthrough the existing asset preparation flow and verify PIE 1.5.2 starts on PHP 8.6 and installs the required extensions.
PHP 8.6 support landed in PIE 1.5 (php/pie#667). No unstable PIE build is needed. Existing images require a rebuild to pick up the refreshed asset.
4. Stable phase (when 8.6 goes stable)
Follow the established RC-to-stable workflow (see commit 15f4faa, PHP 8.5 is now stable). This is the authoritative cleanup checklist; implementation rationale and original validation are recorded in #102.
- Switch PHP 8.6 Apache/CLI base images and the debug parent to stable tags; remove RC-specific labels and tag generation.
- Move
latest/8,cli/8-cli, anddebug/8-debugaliases from the 8.5 scripts to 8.6. - Replace memcached
dev-masterwith a compatible stable release containing the PHP 8.6 fixes. - Replace Xdebug
^3.6@alphawith stable package selection compatible with PHP 8.6. - Replace SPX
0.5.x-devwith stable package selection compatible with PHP 8.6. - Remove the temporary SPX
CFLAGSoverride (-Wno-error=old-style-declaration,-Dtypeof=__typeof__) and its comments; verify the build succeeds without it. The first flag tolerates the ZTS TLS declaration warning under-Werror; the second accommodates PHP headers usingtypeofunder SPX's strict C11 mode. Do not silently carry these RC exceptions into stable images: discuss any remaining upstream blocker with the maintainer. - Review
CI=trueseparately and preserve portability across amd64 CPUs; remove it only if upstream no longer needs it to avoid-march=native. - Verify that the debug build uses the newly built stable Apache base, not an older published image. Preserve the bundled frontend unless replacement is verified to resolve the correct local base.
- Update
check-pulls.sh,test-php.sh, README, and the RC notes inbuild-notes.md/CLAUDE.md. - Update the PHP requirement in
tools/composer.json(currently>=8.1 <=8.5) for the stable supported range. Reviewconfig.platform.phpseparately; it currently targets the tooling's minimum PHP version (8.1.0). - If the
php-test-extfollow-up has landed, update its expected extension matrix and remove any obsolete RC exceptions. - Rebuild Apache, CLI, and debug images and verify extension inventory, the test suite, memcached sessions, Xdebug, and SPX before release.
Activity