Repository navigation
feat: build PHP 8.6 pre-releases, test PHP 8.1, 8.4, 8.5 and 8.6 in CI - #17
Merged
Merged
Conversation
PHP 8.6.0RC4 includes the fix for CVE-2026-109618 and CVE-2026-109619, but couldn't be built: - Pre-releases aren't in php.net/distributions; look up the download URL in php.net's pre-release list when the regular one isn't found - static-php-cli applies its PHP 8.0 micro SAPI patches to versions it doesn't know, which fail on 8.6; skip micro patches, since micro isn't built - PHP 8.6 rejects the --with-pic configure option static-php-cli passes; use --enable-pic for 8.6 and later - APCu 5.1.28 doesn't build with PHP 8.6; use a pinned APCu commit that does - Print the end of static-php-cli's shell log when the build fails, since it doesn't show the failing command's output Tests: - Run one PHP minor version per CI job (8.1, 8.4, 8.5, 8.6 on DDEV HEAD, 8.5 on stable), building its newest release or pre-release, with php_version set to match - Run the release test only in the 8.5 jobs - Get the project URL from ddev describe so tests work with non-default router ports README and install prompt: document pre-release builds, PHP 8.1+ support (static-php-cli doesn't build 7.x), and use current version examples. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
arm64 is where users most need this add-on right now, because deb.sury.org's fixed PHP packages are amd64-only so far. Run the PHP 8.5 and 8.6 tests on DDEV HEAD on GitHub's ubuntu-24.04-arm runners too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
The Issue
Follows #16.
PHP 8.6.0RC4 includes the fix for CVE-2026-109618 and CVE-2026-109619 ("PHP2Shell"); its NEWS has the same entry as 8.5.12. DDEV's 8.6 packages from deb.sury.org don't have the fix yet, and this add-on couldn't build 8.6:
php.net/distributions, so the download returned 404.configure, and compiling APCu.Also, the tests built only 8.3.19, so the versions people use most (8.4, 8.5, and now 8.6) weren't covered. The tests also assumed the router uses port 443.
How This PR Solves The Issue
Building PHP 8.6:
php.net/distributions/php-<version>.tar.gzisn't found, look up the download URL in php.net's pre-release list. Only the current pre-release is listed there.SPC_MICRO_PATCHES="". static-php-cli applies its PHP 8.0 micro patches to versions it doesn't know, and they fail on 8.6. We don't build the micro SAPI, so this is skipped for all versions.--enable-pic, because PHP 8.6 rejects--with-pic.ebbcd3d1on master. The latest release, 5.1.28, fails to compile becausephp_verror()changed in PHP 8.6; master fixed this in July.bin/spc buildfails, print the end of static-php-cli's shell log, which it otherwise doesn't show. That's how the configure and APCu errors were found.Tests:
php_versionto match. DDEV v1.25.4 doesn't accept 8.6, so it falls back to 8.5, which only changes which php.ini is used.ddev describe -j, so they work with a non-default router port.STATIC_PHP_TEST_MINOR=8.6 bats ./tests/test.bats.README and install prompt:
Manual Testing Instructions
Tested by hand on arm64 (Apple Silicon, OrbStack, DDEV HEAD) with 8.6.0RC4:
.ddev/phpoverride.php -mshows no warnings, and every default extension is present.Automated Testing Overview
The 5 matrix jobs described above. CI is the first run of:
Release/Deployment Notes
8.6.0RC4stops resolving once RC5 or 8.6.0 is released, because php.net only lists the current pre-release. Users then need to update--static-php-version. The tests always pick the newest version.🤖 Generated with Claude Code