Repository navigation
feat(php): support PHP 8.6, use apt .sources for PHP ZTS repository - #76
Merged
Merged
Conversation
## Short Summary (TL;DR) Adds PHP 8.6 tests, and adds the PHP ZTS repository as a deb822 `.sources` file instead of running `install.sh`, which writes a legacy `.list` file and rejects PHP 8.6. ## The Issue DDEV HEAD supports PHP 8.6, and the add-on itself needs no changes for it, but: - https://files.henderkes.com/install.sh only accepts 8.2-8.5, even though the PHP 8.6 repository already exists. It also writes a one-line `.list` file, while `ddev/ddev-webserver` uses deb822 `.sources` files for all its repositories. - `php-zts-memcached` and `php-zts-redis` don't exist in the PHP 8.6 repository yet, so `apt-get install` fails on them. - `php-zts-xdebug` 3.6.0~dev+php86~beta2 doesn't load on PHP 8.6.0RC3: ``` Xdebug requires Zend Engine API version 420250926. The Zend Engine API version 420260924 which is installed, is newer. ``` - `blackfire-php` 2026.8.8 has no ZTS build for PHP 8.6: the newest one is `blackfire-20250925-zts.so` (PHP 8.5), there is no `blackfire-20260924-zts.so`. ## How This PR Solves The Issue - `pre.Dockerfile.frankenphp` downloads the repository key for the project's PHP version and adds `/etc/apt/sources.list.d/php-zts.sources`, like the other repositories in `ddev/ddev-webserver`. - A new post-install action removes `php-zts-memcached` and `php-zts-redis` from `.ddev/config.frankenphp.yaml` for PHP 8.6, if the file still has `#ddev-generated`. ## Manual Testing Instructions Requires DDEV HEAD: ```bash ddev utility download-ddev --head export PATH="$HOME/tmp/ddev-download-ddev/main:$PATH" ddev config --php-version 8.6 ddev add-on get ddev/ddev-frankenphp --pr 76 ddev restart ``` ## Automated Testing Overview - Adds the `install from directory PHP 8.6` test with the `php86` tag, and adds `php86` to the `bats_tag` matrix. - The test is skipped on DDEV v1.25.4, which doesn't support PHP 8.6. - On PHP 8.6, `health_checks` skips memcached, redis, xdebug, and blackfire, because of the issues above. - The existing tests for PHP 8.2-8.5 cover the new `.sources` setup. ## Release/Deployment Notes On PHP 8.6, xdebug and blackfire are still installed and disabled by default, so they only fail when enabled with `ddev xdebug on` or `ddev blackfire on`. The memcached/redis removal and the test exclusions have TODOs to remove them once the extensions work with PHP 8.6 upstream. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
Run the tests again after https://pkg.henderkes.com/86/-/packages/debian/php-zts-xdebug/ is fixed. |
stasadev
marked this pull request as ready for review
October 9, 2026 17:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Short Summary (TL;DR)
Adds PHP 8.6 support by adding the PHP ZTS repository as a deb822
.sourcesfile instead of runninginstall.sh, which rejects PHP 8.6 and writes a legacy.listfile.The Issue
DDEV HEAD supports PHP 8.6, but the add-on fails to build with it:
.listfile, whileddev/ddev-webserveruses deb822.sourcesfiles for all its repositories.php-zts-memcachedandphp-zts-redisdon't exist in the PHP 8.6 repository yet, soapt-get installfails on them.blackfire-php2026.8.8 has no ZTS build for PHP 8.6: the newest one isblackfire-20250925-zts.so(PHP 8.5), there is noblackfire-20260924-zts.so.How This PR Solves The Issue
pre.Dockerfile.frankenphpdownloads the repository key for the project's PHP version and adds/etc/apt/sources.list.d/php-zts.sources, like the other repositories inddev/ddev-webserver.php-zts-memcachedandphp-zts-redisfrom.ddev/config.frankenphp.yamlfor PHP 8.6, if the file still has#ddev-generated.Manual Testing Instructions
Requires DDEV HEAD:
Automated Testing Overview
install from directory PHP 8.6test with thephp86tag, and addsphp86to thebats_tagmatrix.health_checksskips memcached, redis, and blackfire, because of the issues above..sourcessetup.Release/Deployment Notes
On PHP 8.6, blackfire is installed and disabled by default, so it only fails when enabled with
ddev blackfire on.The memcached/redis removal and the test exclusion have TODOs to remove them once the extensions work with PHP 8.6 upstream.
🤖 Generated with Claude Code