Skip to content

Update PHP versions for 2026-10; build imagick, memcached and yaml from git on 8.6 - #15

Merged
byjg merged 1 commit into
masterfrom
work/loving-ramanujan-clo5nr
Oct 5, 2026
Merged

byjg merged 1 commit into
masterfrom
work/loving-ramanujan-clo5nr

Conversation

@byjg

@byjg byjg commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

Monthly PHP version check, plus a way to build PECL extensions from git so PHP 8.6 gets the extensions Alpine has not packaged yet.

Version refresh

Branch Old New
8.6 8.6.0beta2 8.6.0rc2
8.5 8.5.10 8.5.11
8.4 8.4.25 8.4.26
8.3 8.3.33 8.3.35

No branch added or removed: PHP 8.7 is not in Alpine edge or edge/testing yet, and 8.2 stays out of the build matrix.

New optional keys on pecl: entries

pecl:
  - name: imagick
    enable: False            # compile, but do not create the .ini
    source:                  # build from git instead of the pecl.php.net release
      repository: https://github.com/Imagick/imagick.git
      reference: 55ed2e9fda264395636a2e27e51f31673f5566ab
    buildPackages:           # only needed to compile, removed with .build
      - imagemagick-dev
    packages:                # kept in the image at runtime
      - (NAME)

The top-level peclBuildPackages / additionalPackages remain for generic packages. Configs that do not use the new keys generate the same Dockerfile as before.

PHP 8.6

Alpine has no php86-pecl-imagick, php86-pecl-memcached or php86-pecl-yaml, and the latest PECL releases of all three fail to compile on 8.6 (XtOffsetOf / zval_dtor were removed). They are now built from a pinned upstream commit. This is temporary: each entry is replaced by the Alpine package once it is published.

  • memcached, yaml: enabled.
  • imagick: compiled but not enabled, and the ImageMagick runtime is not shipped. To use it: apk add --no-cache imagemagick and echo "extension=imagick.so" > /etc/php86/conf.d/imagick.ini (documented in docs/dockerfile.md).

Known differences on 8.6:

  • memcached is built with SASL and session support but without igbinary, json and msgpack, which the Alpine package on 8.5 has.
  • The git builds report the version of the last release (imagick 3.8.1, memcached 3.4.0, yaml 2.3.0), because upstream has not bumped it.

Config cleanup (8.2–8.6)

  • mcrypt removed (deprecated since PHP 7.1). ⚠ Breaking for 8.3: it was still enabled there (and in the 8.2 config, which is no longer built). It was already absent from 8.4–8.6. Legacy configs (5.6–8.1) are untouched.
  • opcache: the commented line in 8.5/8.6 now says it is built into the PHP binary since 8.5.
  • imagick: the commented line in 8.2–8.5 now says it is not bundled and gives the install command (apk add phpXX-pecl-imagick).

Docs

docs/building.md (new keys), docs/dockerfile.md (imagick on 8.6, simpler imagick example for 8.3), docs/security.md, docs/image-base.md, README.md and the landing page (imagick and mcrypt tiles removed).

Test plan

  • Generated Dockerfiles for 8.5 and 5.6 are identical before and after the template change; 8.4 is unchanged by the config cleanup.
  • Generated Dockerfiles for 8.2 and 8.3 differ only by the missing phpXX-pecl-mcrypt.
  • Built 8.6 base (amd64): memcached and yaml load and work, imagick is not loaded, imagick.so is present, build packages and clone directories are gone.
  • In the 8.6 base image, the documented steps enable imagick and it renders a PNG.
  • Built 8.3 base (amd64): php -m differs from the published image only by mcrypt; apk add php83-pecl-imagick loads imagick.
  • CI to confirm all variants (cli, fpm, fpm-nginx, fpm-apache, nginx) and arm64 build for all branches.

…om git on 8.6

Refresh the Latest Version numbers in the README to match what
Alpine edge currently ships:

- 8.6: 8.6.0beta2 -> 8.6.0rc2
- 8.5: 8.5.10 -> 8.5.11
- 8.4: 8.4.25 -> 8.4.26
- 8.3: 8.3.33 -> 8.3.35

PECL entries in config/php-*.yml accept new optional keys:

- source: {repository, reference} builds the extension from a git
  repository instead of the pecl.php.net release
- buildPackages / packages: build-only and runtime packages that
  belong to a single extension
- enable: False compiles the extension but does not create its .ini

PHP 8.6: Alpine has no package for imagick, memcached and yaml, and
their latest PECL releases do not compile on 8.6, so they are built
from a pinned upstream commit until Alpine publishes them. imagick is
compiled but not enabled, since the ImageMagick runtime is not shipped;
docs/dockerfile.md explains how to turn it on.

PHP 8.2-8.6: remove pecl-mcrypt (deprecated since PHP 7.1). It was
still enabled on 8.2 and 8.3. Replace the commented opcache and imagick
lines with comments saying opcache is built into PHP since 8.5 and
imagick is installed on demand.

Docs and landing page updated to match.
@byjg
byjg force-pushed the work/loving-ramanujan-clo5nr branch from 17d59fc to 1c4387b Compare October 5, 2026 14:10
@byjg byjg changed the title Update PHP versions for 2026-10 Update PHP versions for 2026-10; build imagick, memcached and yaml from git on 8.6 Oct 5, 2026
@byjg
byjg merged commit 3bcef56 into master Oct 5, 2026
10 checks passed
@byjg
byjg deleted the work/loving-ramanujan-clo5nr branch October 5, 2026 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant