Repository navigation
[TASK] Replace PECL installs with PIE and upstream source builds - #584
Merged
Kanti merged 2 commits intoOct 21, 2026
Merged
Conversation
Kanti
force-pushed
the
build/replace-pecl-with-pie
branch
2 times, most recently
from
October 21, 2026 10:47
0507e94 to
ffe24cb
Compare
Kanti
force-pushed
the
build/replace-pecl-with-pie
branch
2 times, most recently
from
October 21, 2026 13:04
9865eab to
2802bc2
Compare
Kanti
force-pushed
the
build/replace-pecl-with-pie
branch
from
October 21, 2026 14:16
2802bc2 to
070de7a
Compare
|
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.



PECL outages prevent rebuilding the PHP images. This PR replaces PECL installations with PIE or direct official upstream source builds while preserving existing extension pins, loading configuration, and PHP 8.2–8.5 Debian/Alpine support.
Installation
ghcr.io/php/pie:binbuild tool directly in the Dockerfile templates. APCu, Excimer, OpenTelemetry, Memcached, YAML, Redis, MongoDB, and Xdebug remain unpinned PIE requests.ionCube ARM64 fix
The previous script installed the x86-64 loader archive on ARM64. The file existed but PHP could not load it, which the strict Serverspec stderr checks correctly detected.
Select the official archive using
uname -m(x86_64oraarch64), verify that it contains the target PHP loader, and load-test the copied module with PHP before writing its INI. An existing loader that cannot load fails the build. Unsupported architectures or missing PHP-version loaders are skipped without an invalid INI; Alpine retains its existing skip.Behavior and tests
Existing extension loading, INI configuration, debugger switching, and module availability tests remain in place. Both strict
stderr == ''assertions are retained. Existing Serverspec and container structure tests still run through the unchanged CI architecture on AMD64 and ARM64.Local validation covers shell syntax, matching generated files, preserved pins, removal of obsolete references, and a real AMD64 ionCube loader in CLI/FPM with empty stderr. Missing-version, unsupported-architecture, Alpine-skip, and invalid-loader cases were checked locally. Only focused samples were run locally; native ARM64 and the full PHP image matrix are checked in GitHub Actions.
The previous-head CI run, #39604752036 on
2802bc25, completed with 114/120 PHP jobs passing. All six failures were Debian PHP 8.1 development builds, which are removed by upstream #587. All 96 remaining PHP 8.2–8.5 builds and Serverspec jobs passed, along with all 48 configured structure-test steps. Native Debian ARM64 ionCube loading was verified for every supported PHP version.The local rebase onto
75d3f2e0has regenerated, consistent files and no PHP 8.1 workaround. It has not been pushed or tested by a new CI run, so the previous results are not a CI pass for the rebased commit.Review guide
The first commit contains source templates, ionCube provisioning, test cleanup, and documentation. The second contains regenerated Dockerfiles and provisioning copies. The CI builder and generated workflow match
master.