diff --git a/8.2/alpine3.23/cli/Dockerfile b/8.2/alpine3.23/cli/Dockerfile
index dbcba69dc..9ae16455c 100644
--- a/8.2/alpine3.23/cli/Dockerfile
+++ b/8.2/alpine3.23/cli/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/alpine3.23/fpm/Dockerfile b/8.2/alpine3.23/fpm/Dockerfile
index 82c312579..88b361bfe 100644
--- a/8.2/alpine3.23/fpm/Dockerfile
+++ b/8.2/alpine3.23/fpm/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/alpine3.23/zts/Dockerfile b/8.2/alpine3.23/zts/Dockerfile
index c9241e163..a2f230ec2 100644
--- a/8.2/alpine3.23/zts/Dockerfile
+++ b/8.2/alpine3.23/zts/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/alpine3.24/cli/Dockerfile b/8.2/alpine3.24/cli/Dockerfile
index bb2ea5358..816edf11e 100644
--- a/8.2/alpine3.24/cli/Dockerfile
+++ b/8.2/alpine3.24/cli/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/alpine3.24/fpm/Dockerfile b/8.2/alpine3.24/fpm/Dockerfile
index fe61dc8fd..38a080311 100644
--- a/8.2/alpine3.24/fpm/Dockerfile
+++ b/8.2/alpine3.24/fpm/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/alpine3.24/zts/Dockerfile b/8.2/alpine3.24/zts/Dockerfile
index 798d25bbd..3d9567525 100644
--- a/8.2/alpine3.24/zts/Dockerfile
+++ b/8.2/alpine3.24/zts/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/bookworm/apache/Dockerfile b/8.2/bookworm/apache/Dockerfile
index d4cec927b..c47506dbe 100644
--- a/8.2/bookworm/apache/Dockerfile
+++ b/8.2/bookworm/apache/Dockerfile
@@ -120,9 +120,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/bookworm/cli/Dockerfile b/8.2/bookworm/cli/Dockerfile
index b1f7ef7e5..23a35ab8f 100644
--- a/8.2/bookworm/cli/Dockerfile
+++ b/8.2/bookworm/cli/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/bookworm/fpm/Dockerfile b/8.2/bookworm/fpm/Dockerfile
index 1679783eb..dd03ec1ad 100644
--- a/8.2/bookworm/fpm/Dockerfile
+++ b/8.2/bookworm/fpm/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/bookworm/zts/Dockerfile b/8.2/bookworm/zts/Dockerfile
index 2e7fe7f03..9591f24aa 100644
--- a/8.2/bookworm/zts/Dockerfile
+++ b/8.2/bookworm/zts/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/trixie/apache/Dockerfile b/8.2/trixie/apache/Dockerfile
index d95512fd4..875d1511c 100644
--- a/8.2/trixie/apache/Dockerfile
+++ b/8.2/trixie/apache/Dockerfile
@@ -120,9 +120,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/trixie/cli/Dockerfile b/8.2/trixie/cli/Dockerfile
index 7caf8357e..36279166f 100644
--- a/8.2/trixie/cli/Dockerfile
+++ b/8.2/trixie/cli/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/trixie/fpm/Dockerfile b/8.2/trixie/fpm/Dockerfile
index ef842e8dd..41913708c 100644
--- a/8.2/trixie/fpm/Dockerfile
+++ b/8.2/trixie/fpm/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.2/trixie/zts/Dockerfile b/8.2/trixie/zts/Dockerfile
index c88b08038..e5caca65b 100644
--- a/8.2/trixie/zts/Dockerfile
+++ b/8.2/trixie/zts/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
-ENV PHP_VERSION 8.2.33
-ENV PHP_URL="https://www.php.net/distributions/php-8.2.33.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.33.tar.xz.asc"
-ENV PHP_SHA256="fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1"
+ENV PHP_VERSION 8.2.34
+ENV PHP_URL="https://www.php.net/distributions/php-8.2.34.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.34.tar.xz.asc"
+ENV PHP_SHA256="5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39"
RUN set -eux; \
\
diff --git a/8.4-rc/alpine3.23/cli/Dockerfile b/8.4-rc/alpine3.23/cli/Dockerfile
deleted file mode 100644
index 834c08459..000000000
--- a/8.4-rc/alpine3.23/cli/Dockerfile
+++ /dev/null
@@ -1,217 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.23
-
-# dependencies required for running "phpize"
-# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev dpkg \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkgconf \
- re2c
-
-# persistent / runtime deps
-RUN apk add --no-cache \
- ca-certificates \
- curl \
- openssl \
- tar \
- xz
-
-# ensure www-data user exists
-RUN set -eux; \
- adduser -u 82 -D -S -G www-data www-data
-# 82 is the standard uid/gid for "www-data" in Alpine
-# https://git.alpinelinux.org/aports/tree/main/apache2/apache2.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/lighttpd/lighttpd.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.pre-install?h=3.14-stable
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- apk add --no-cache --virtual .fetch-deps gnupg; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apk del --no-network .fetch-deps
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- apk add --no-cache --virtual .build-deps \
- $PHPIZE_DEPS \
- argon2-dev \
- coreutils \
- curl-dev \
- gnu-libiconv-dev \
- libsodium-dev \
- libxml2-dev \
- linux-headers \
- oniguruma-dev \
- openssl-dev \
- readline-dev \
- sqlite-dev \
- ; \
- \
-# make sure musl's iconv doesn't get used (https://www.php.net/manual/en/intro.iconv.php)
- rm -vf /usr/include/iconv.h; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv=/usr \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
- runDeps="$( \
- scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
- | tr ',' '\n' \
- | sort -u \
- | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
- )"; \
- apk add --no-cache $runDeps; \
- \
- apk del --no-network .build-deps; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/alpine3.23/cli/docker-php-entrypoint b/8.4-rc/alpine3.23/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/alpine3.23/cli/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/alpine3.23/cli/docker-php-ext-configure b/8.4-rc/alpine3.23/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/alpine3.23/cli/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/alpine3.23/cli/docker-php-ext-enable b/8.4-rc/alpine3.23/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/alpine3.23/cli/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/alpine3.23/cli/docker-php-ext-install b/8.4-rc/alpine3.23/cli/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/alpine3.23/cli/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/alpine3.23/cli/docker-php-source b/8.4-rc/alpine3.23/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/alpine3.23/cli/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/alpine3.23/fpm/Dockerfile b/8.4-rc/alpine3.23/fpm/Dockerfile
deleted file mode 100644
index 33026fcad..000000000
--- a/8.4-rc/alpine3.23/fpm/Dockerfile
+++ /dev/null
@@ -1,272 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.23
-
-# dependencies required for running "phpize"
-# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev dpkg \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkgconf \
- re2c
-
-# persistent / runtime deps
-RUN apk add --no-cache \
- ca-certificates \
- curl \
- openssl \
- tar \
- xz
-
-# ensure www-data user exists
-RUN set -eux; \
- adduser -u 82 -D -S -G www-data www-data
-# 82 is the standard uid/gid for "www-data" in Alpine
-# https://git.alpinelinux.org/aports/tree/main/apache2/apache2.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/lighttpd/lighttpd.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.pre-install?h=3.14-stable
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- apk add --no-cache --virtual .fetch-deps gnupg; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apk del --no-network .fetch-deps
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- apk add --no-cache --virtual .build-deps \
- $PHPIZE_DEPS \
- argon2-dev \
- coreutils \
- curl-dev \
- gnu-libiconv-dev \
- libsodium-dev \
- libxml2-dev \
- linux-headers \
- oniguruma-dev \
- openssl-dev \
- readline-dev \
- sqlite-dev \
- ; \
- \
-# make sure musl's iconv doesn't get used (https://www.php.net/manual/en/intro.iconv.php)
- rm -vf /usr/include/iconv.h; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv=/usr \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.")
- --disable-phpdbg \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- \
- --disable-cgi \
- \
- --enable-fpm \
- --with-fpm-user=www-data \
- --with-fpm-group=www-data \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
- runDeps="$( \
- scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
- | tr ',' '\n' \
- | sort -u \
- | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
- )"; \
- apk add --no-cache $runDeps; \
- \
- apk del --no-network .build-deps; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-WORKDIR /var/www/html
-
-RUN set -eux; \
- cd "${PHP_INI_DIR%/php}"; \
- \
- cp -v php-fpm.conf.default php-fpm.conf; \
- cp -v php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- \
- # comment out localhost-only listen address
- grep -E '^listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- sed -ri 's/^(listen = 127.0.0.1:9000)/;\1/' php-fpm.d/www.conf; \
- grep -E '^;listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- \
- { \
- echo '[global]'; \
- echo 'error_log = /proc/self/fd/2'; \
- echo; echo '; https://github.com/docker-library/php/pull/725#issuecomment-443540114'; echo 'log_limit = 8192'; \
- echo; \
- echo '[www]'; \
- echo '; php-fpm closes STDOUT on startup, so sending logs to /proc/self/fd/1 does not work.'; \
- echo '; https://bugs.php.net/bug.php?id=73886'; \
- echo 'access.log = /proc/self/fd/2'; \
- echo; \
- echo 'clear_env = no'; \
- echo; \
- echo '; Ensure worker stdout and stderr are sent to the main error log.'; \
- echo 'catch_workers_output = yes'; \
- echo 'decorate_workers_output = no'; \
- echo; \
- echo '; default listen address for easy override in later php-fpm.d/*.conf files'; \
- echo 'listen = 9000'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '; the [www] ini section below is for backwards compatibility and will be removed in 8.6+'; \
- echo '[www]'; \
- } | tee php-fpm.d/zz-docker.conf; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
- { \
- echo '; https://github.com/docker-library/php/issues/878#issuecomment-938595965'; \
- echo 'fastcgi.logging = Off'; \
- } > "$PHP_INI_DIR/conf.d/docker-fpm.ini"
-
-# Override stop signal to stop process gracefully
-# https://github.com/php/php-src/blob/17baa87faddc2550def3ae7314236826bc1b1398/sapi/fpm/php-fpm.8.in#L163
-STOPSIGNAL SIGQUIT
-
-EXPOSE 9000
-CMD ["php-fpm"]
diff --git a/8.4-rc/alpine3.23/fpm/docker-php-entrypoint b/8.4-rc/alpine3.23/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.4-rc/alpine3.23/fpm/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php-fpm "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/alpine3.23/fpm/docker-php-ext-configure b/8.4-rc/alpine3.23/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/alpine3.23/fpm/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/alpine3.23/fpm/docker-php-ext-enable b/8.4-rc/alpine3.23/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/alpine3.23/fpm/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/alpine3.23/fpm/docker-php-ext-install b/8.4-rc/alpine3.23/fpm/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/alpine3.23/fpm/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/alpine3.23/fpm/docker-php-source b/8.4-rc/alpine3.23/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/alpine3.23/fpm/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/alpine3.23/zts/Dockerfile b/8.4-rc/alpine3.23/zts/Dockerfile
deleted file mode 100644
index f726bd46f..000000000
--- a/8.4-rc/alpine3.23/zts/Dockerfile
+++ /dev/null
@@ -1,224 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.23
-
-# dependencies required for running "phpize"
-# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev dpkg \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkgconf \
- re2c
-
-# persistent / runtime deps
-RUN apk add --no-cache \
- ca-certificates \
- curl \
- openssl \
- tar \
- xz
-
-# ensure www-data user exists
-RUN set -eux; \
- adduser -u 82 -D -S -G www-data www-data
-# 82 is the standard uid/gid for "www-data" in Alpine
-# https://git.alpinelinux.org/aports/tree/main/apache2/apache2.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/lighttpd/lighttpd.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.pre-install?h=3.14-stable
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- apk add --no-cache --virtual .fetch-deps gnupg; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apk del --no-network .fetch-deps
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- apk add --no-cache --virtual .build-deps \
- $PHPIZE_DEPS \
- argon2-dev \
- coreutils \
- curl-dev \
- gnu-libiconv-dev \
- libsodium-dev \
- libxml2-dev \
- linux-headers \
- oniguruma-dev \
- openssl-dev \
- readline-dev \
- sqlite-dev \
- ; \
- \
-# make sure musl's iconv doesn't get used (https://www.php.net/manual/en/intro.iconv.php)
- rm -vf /usr/include/iconv.h; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv=/usr \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- \
-# https://github.com/docker-library/php/pull/939#issuecomment-730501748
- --enable-embed \
- \
- --enable-zts \
-# https://externals.io/message/118859
- --disable-zend-signals \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
- runDeps="$( \
- scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
- | tr ',' '\n' \
- | sort -u \
- | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
- )"; \
- apk add --no-cache $runDeps; \
- \
- apk del --no-network .build-deps; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/alpine3.23/zts/docker-php-entrypoint b/8.4-rc/alpine3.23/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/alpine3.23/zts/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/alpine3.23/zts/docker-php-ext-configure b/8.4-rc/alpine3.23/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/alpine3.23/zts/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/alpine3.23/zts/docker-php-ext-enable b/8.4-rc/alpine3.23/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/alpine3.23/zts/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/alpine3.23/zts/docker-php-ext-install b/8.4-rc/alpine3.23/zts/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/alpine3.23/zts/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/alpine3.23/zts/docker-php-source b/8.4-rc/alpine3.23/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/alpine3.23/zts/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/alpine3.24/cli/Dockerfile b/8.4-rc/alpine3.24/cli/Dockerfile
deleted file mode 100644
index 00386dfca..000000000
--- a/8.4-rc/alpine3.24/cli/Dockerfile
+++ /dev/null
@@ -1,217 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.24
-
-# dependencies required for running "phpize"
-# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev dpkg \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkgconf \
- re2c
-
-# persistent / runtime deps
-RUN apk add --no-cache \
- ca-certificates \
- curl \
- openssl \
- tar \
- xz
-
-# ensure www-data user exists
-RUN set -eux; \
- adduser -u 82 -D -S -G www-data www-data
-# 82 is the standard uid/gid for "www-data" in Alpine
-# https://git.alpinelinux.org/aports/tree/main/apache2/apache2.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/lighttpd/lighttpd.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.pre-install?h=3.14-stable
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- apk add --no-cache --virtual .fetch-deps gnupg; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apk del --no-network .fetch-deps
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- apk add --no-cache --virtual .build-deps \
- $PHPIZE_DEPS \
- argon2-dev \
- coreutils \
- curl-dev \
- gnu-libiconv-dev \
- libsodium-dev \
- libxml2-dev \
- linux-headers \
- oniguruma-dev \
- openssl-dev \
- readline-dev \
- sqlite-dev \
- ; \
- \
-# make sure musl's iconv doesn't get used (https://www.php.net/manual/en/intro.iconv.php)
- rm -vf /usr/include/iconv.h; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv=/usr \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
- runDeps="$( \
- scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
- | tr ',' '\n' \
- | sort -u \
- | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
- )"; \
- apk add --no-cache $runDeps; \
- \
- apk del --no-network .build-deps; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/alpine3.24/cli/docker-php-entrypoint b/8.4-rc/alpine3.24/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/alpine3.24/cli/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/alpine3.24/cli/docker-php-ext-configure b/8.4-rc/alpine3.24/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/alpine3.24/cli/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/alpine3.24/cli/docker-php-ext-enable b/8.4-rc/alpine3.24/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/alpine3.24/cli/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/alpine3.24/cli/docker-php-ext-install b/8.4-rc/alpine3.24/cli/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/alpine3.24/cli/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/alpine3.24/cli/docker-php-source b/8.4-rc/alpine3.24/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/alpine3.24/cli/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/alpine3.24/fpm/Dockerfile b/8.4-rc/alpine3.24/fpm/Dockerfile
deleted file mode 100644
index b162a59ac..000000000
--- a/8.4-rc/alpine3.24/fpm/Dockerfile
+++ /dev/null
@@ -1,272 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.24
-
-# dependencies required for running "phpize"
-# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev dpkg \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkgconf \
- re2c
-
-# persistent / runtime deps
-RUN apk add --no-cache \
- ca-certificates \
- curl \
- openssl \
- tar \
- xz
-
-# ensure www-data user exists
-RUN set -eux; \
- adduser -u 82 -D -S -G www-data www-data
-# 82 is the standard uid/gid for "www-data" in Alpine
-# https://git.alpinelinux.org/aports/tree/main/apache2/apache2.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/lighttpd/lighttpd.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.pre-install?h=3.14-stable
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- apk add --no-cache --virtual .fetch-deps gnupg; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apk del --no-network .fetch-deps
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- apk add --no-cache --virtual .build-deps \
- $PHPIZE_DEPS \
- argon2-dev \
- coreutils \
- curl-dev \
- gnu-libiconv-dev \
- libsodium-dev \
- libxml2-dev \
- linux-headers \
- oniguruma-dev \
- openssl-dev \
- readline-dev \
- sqlite-dev \
- ; \
- \
-# make sure musl's iconv doesn't get used (https://www.php.net/manual/en/intro.iconv.php)
- rm -vf /usr/include/iconv.h; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv=/usr \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.")
- --disable-phpdbg \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- \
- --disable-cgi \
- \
- --enable-fpm \
- --with-fpm-user=www-data \
- --with-fpm-group=www-data \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
- runDeps="$( \
- scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
- | tr ',' '\n' \
- | sort -u \
- | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
- )"; \
- apk add --no-cache $runDeps; \
- \
- apk del --no-network .build-deps; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-WORKDIR /var/www/html
-
-RUN set -eux; \
- cd "${PHP_INI_DIR%/php}"; \
- \
- cp -v php-fpm.conf.default php-fpm.conf; \
- cp -v php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- \
- # comment out localhost-only listen address
- grep -E '^listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- sed -ri 's/^(listen = 127.0.0.1:9000)/;\1/' php-fpm.d/www.conf; \
- grep -E '^;listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- \
- { \
- echo '[global]'; \
- echo 'error_log = /proc/self/fd/2'; \
- echo; echo '; https://github.com/docker-library/php/pull/725#issuecomment-443540114'; echo 'log_limit = 8192'; \
- echo; \
- echo '[www]'; \
- echo '; php-fpm closes STDOUT on startup, so sending logs to /proc/self/fd/1 does not work.'; \
- echo '; https://bugs.php.net/bug.php?id=73886'; \
- echo 'access.log = /proc/self/fd/2'; \
- echo; \
- echo 'clear_env = no'; \
- echo; \
- echo '; Ensure worker stdout and stderr are sent to the main error log.'; \
- echo 'catch_workers_output = yes'; \
- echo 'decorate_workers_output = no'; \
- echo; \
- echo '; default listen address for easy override in later php-fpm.d/*.conf files'; \
- echo 'listen = 9000'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '; the [www] ini section below is for backwards compatibility and will be removed in 8.6+'; \
- echo '[www]'; \
- } | tee php-fpm.d/zz-docker.conf; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
- { \
- echo '; https://github.com/docker-library/php/issues/878#issuecomment-938595965'; \
- echo 'fastcgi.logging = Off'; \
- } > "$PHP_INI_DIR/conf.d/docker-fpm.ini"
-
-# Override stop signal to stop process gracefully
-# https://github.com/php/php-src/blob/17baa87faddc2550def3ae7314236826bc1b1398/sapi/fpm/php-fpm.8.in#L163
-STOPSIGNAL SIGQUIT
-
-EXPOSE 9000
-CMD ["php-fpm"]
diff --git a/8.4-rc/alpine3.24/fpm/docker-php-entrypoint b/8.4-rc/alpine3.24/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.4-rc/alpine3.24/fpm/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php-fpm "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/alpine3.24/fpm/docker-php-ext-configure b/8.4-rc/alpine3.24/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/alpine3.24/fpm/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/alpine3.24/fpm/docker-php-ext-enable b/8.4-rc/alpine3.24/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/alpine3.24/fpm/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/alpine3.24/fpm/docker-php-ext-install b/8.4-rc/alpine3.24/fpm/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/alpine3.24/fpm/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/alpine3.24/fpm/docker-php-source b/8.4-rc/alpine3.24/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/alpine3.24/fpm/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/alpine3.24/zts/Dockerfile b/8.4-rc/alpine3.24/zts/Dockerfile
deleted file mode 100644
index b0e128255..000000000
--- a/8.4-rc/alpine3.24/zts/Dockerfile
+++ /dev/null
@@ -1,224 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.24
-
-# dependencies required for running "phpize"
-# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev dpkg \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkgconf \
- re2c
-
-# persistent / runtime deps
-RUN apk add --no-cache \
- ca-certificates \
- curl \
- openssl \
- tar \
- xz
-
-# ensure www-data user exists
-RUN set -eux; \
- adduser -u 82 -D -S -G www-data www-data
-# 82 is the standard uid/gid for "www-data" in Alpine
-# https://git.alpinelinux.org/aports/tree/main/apache2/apache2.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/lighttpd/lighttpd.pre-install?h=3.14-stable
-# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.pre-install?h=3.14-stable
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- apk add --no-cache --virtual .fetch-deps gnupg; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apk del --no-network .fetch-deps
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- apk add --no-cache --virtual .build-deps \
- $PHPIZE_DEPS \
- argon2-dev \
- coreutils \
- curl-dev \
- gnu-libiconv-dev \
- libsodium-dev \
- libxml2-dev \
- linux-headers \
- oniguruma-dev \
- openssl-dev \
- readline-dev \
- sqlite-dev \
- ; \
- \
-# make sure musl's iconv doesn't get used (https://www.php.net/manual/en/intro.iconv.php)
- rm -vf /usr/include/iconv.h; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv=/usr \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- \
-# https://github.com/docker-library/php/pull/939#issuecomment-730501748
- --enable-embed \
- \
- --enable-zts \
-# https://externals.io/message/118859
- --disable-zend-signals \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
- runDeps="$( \
- scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
- | tr ',' '\n' \
- | sort -u \
- | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
- )"; \
- apk add --no-cache $runDeps; \
- \
- apk del --no-network .build-deps; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/alpine3.24/zts/docker-php-entrypoint b/8.4-rc/alpine3.24/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/alpine3.24/zts/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/alpine3.24/zts/docker-php-ext-configure b/8.4-rc/alpine3.24/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/alpine3.24/zts/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/alpine3.24/zts/docker-php-ext-enable b/8.4-rc/alpine3.24/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/alpine3.24/zts/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/alpine3.24/zts/docker-php-ext-install b/8.4-rc/alpine3.24/zts/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/alpine3.24/zts/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/alpine3.24/zts/docker-php-source b/8.4-rc/alpine3.24/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/alpine3.24/zts/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/bookworm/apache/Dockerfile b/8.4-rc/bookworm/apache/Dockerfile
deleted file mode 100644
index 55bf17253..000000000
--- a/8.4-rc/bookworm/apache/Dockerfile
+++ /dev/null
@@ -1,305 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bookworm-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- rm -rf /var/lib/apt/lists/*
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-ENV APACHE_CONFDIR /etc/apache2
-ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars
-
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends apache2; \
- rm -rf /var/lib/apt/lists/*; \
- \
-# generically convert lines like
-# export APACHE_RUN_USER=www-data
-# into
-# : ${APACHE_RUN_USER:=www-data}
-# export APACHE_RUN_USER
-# so that they can be overridden at runtime ("-e APACHE_RUN_USER=...")
- sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' "$APACHE_ENVVARS"; \
- \
-# setup directories and permissions
- . "$APACHE_ENVVARS"; \
- for dir in \
- "$APACHE_LOCK_DIR" \
- "$APACHE_RUN_DIR" \
- "$APACHE_LOG_DIR" \
-# https://salsa.debian.org/apache-team/apache2/-/commit/b97ca8714890ead1ba6c095699dde752e8433205
- "$APACHE_RUN_DIR/socks" \
- ; do \
- rm -rvf "$dir"; \
- mkdir -p "$dir"; \
- chown "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$dir"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- chmod 1777 "$dir"; \
- done; \
- \
-# delete the "index.html" that installing Apache drops in here
- rm -rvf /var/www/html/*; \
- \
-# logs should go to stdout / stderr
- ln -sfT /dev/stderr "$APACHE_LOG_DIR/error.log"; \
- ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log"; \
- ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log"; \
- chown -R --no-dereference "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$APACHE_LOG_DIR"
-
-# Apache + PHP requires preforking Apache for best results
-RUN a2dismod mpm_event && a2enmod mpm_prefork
-
-# PHP files should be handled by PHP, and should be preferred over any other file type
-RUN { \
- echo ''; \
- echo '\tSetHandler application/x-httpd-php'; \
- echo ''; \
- echo; \
- echo 'DirectoryIndex disabled'; \
- echo 'DirectoryIndex index.php index.html'; \
- echo; \
- echo ''; \
- echo '\tOptions -Indexes'; \
- echo '\tAllowOverride All'; \
- echo ''; \
- } | tee "$APACHE_CONFDIR/conf-available/docker-php.conf" \
- && a2enconf docker-php
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- rm -rf /var/lib/apt/lists/*; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- apache2-dev \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.")
- --disable-phpdbg \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
- --disable-cgi \
- \
- --with-apxs2 \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- rm -rf /var/lib/apt/lists/*; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-# https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop
-STOPSIGNAL SIGWINCH
-
-COPY apache2-foreground /usr/local/bin/
-WORKDIR /var/www/html
-
-EXPOSE 80
-CMD ["apache2-foreground"]
diff --git a/8.4-rc/bookworm/apache/apache2-foreground b/8.4-rc/bookworm/apache/apache2-foreground
deleted file mode 100755
index 5fe22e26f..000000000
--- a/8.4-rc/bookworm/apache/apache2-foreground
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-set -e
-
-# Note: we don't just use "apache2ctl" here because it itself is just a shell-script wrapper around apache2 which provides extra functionality like "apache2ctl start" for launching apache2 in the background.
-# (also, when run as "apache2ctl ", it does not use "exec", which leaves an undesirable resident shell process)
-
-: "${APACHE_CONFDIR:=/etc/apache2}"
-: "${APACHE_ENVVARS:=$APACHE_CONFDIR/envvars}"
-if test -f "$APACHE_ENVVARS"; then
- . "$APACHE_ENVVARS"
-fi
-
-# Apache gets grumpy about PID files pre-existing
-: "${APACHE_RUN_DIR:=/var/run/apache2}"
-: "${APACHE_PID_FILE:=$APACHE_RUN_DIR/apache2.pid}"
-rm -f "$APACHE_PID_FILE"
-
-# create missing directories
-# (especially APACHE_RUN_DIR, APACHE_LOCK_DIR, and APACHE_LOG_DIR)
-for e in "${!APACHE_@}"; do
- if [[ "$e" == *_DIR ]] && [[ "${!e}" == /* ]]; then
- # handle "/var/lock" being a symlink to "/run/lock", but "/run/lock" not existing beforehand, so "/var/lock/something" fails to mkdir
- # mkdir: cannot create directory '/var/lock': File exists
- dir="${!e}"
- while [ "$dir" != "$(dirname "$dir")" ]; do
- dir="$(dirname "$dir")"
- if [ -d "$dir" ]; then
- break
- fi
- absDir="$(readlink -f "$dir" 2>/dev/null || :)"
- if [ -n "$absDir" ]; then
- mkdir -p "$absDir"
- fi
- done
-
- mkdir -p "${!e}"
- fi
-done
-
-exec apache2 -DFOREGROUND "$@"
diff --git a/8.4-rc/bookworm/apache/docker-php-entrypoint b/8.4-rc/bookworm/apache/docker-php-entrypoint
deleted file mode 100755
index 3d36d5e8c..000000000
--- a/8.4-rc/bookworm/apache/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- apache2-foreground "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/bookworm/apache/docker-php-ext-configure b/8.4-rc/bookworm/apache/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/bookworm/apache/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/bookworm/apache/docker-php-ext-enable b/8.4-rc/bookworm/apache/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/bookworm/apache/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/bookworm/apache/docker-php-ext-install b/8.4-rc/bookworm/apache/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/bookworm/apache/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/bookworm/apache/docker-php-source b/8.4-rc/bookworm/apache/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/bookworm/apache/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/bookworm/cli/Dockerfile b/8.4-rc/bookworm/cli/Dockerfile
deleted file mode 100644
index 1506def10..000000000
--- a/8.4-rc/bookworm/cli/Dockerfile
+++ /dev/null
@@ -1,237 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bookworm-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- rm -rf /var/lib/apt/lists/*
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- rm -rf /var/lib/apt/lists/*; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
-# https://github.com/docker-library/php/pull/939#issuecomment-730501748
- --enable-embed \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- rm -rf /var/lib/apt/lists/*; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/bookworm/cli/docker-php-entrypoint b/8.4-rc/bookworm/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/bookworm/cli/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/bookworm/cli/docker-php-ext-configure b/8.4-rc/bookworm/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/bookworm/cli/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/bookworm/cli/docker-php-ext-enable b/8.4-rc/bookworm/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/bookworm/cli/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/bookworm/cli/docker-php-ext-install b/8.4-rc/bookworm/cli/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/bookworm/cli/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/bookworm/cli/docker-php-source b/8.4-rc/bookworm/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/bookworm/cli/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/bookworm/fpm/Dockerfile b/8.4-rc/bookworm/fpm/Dockerfile
deleted file mode 100644
index d116b7cc8..000000000
--- a/8.4-rc/bookworm/fpm/Dockerfile
+++ /dev/null
@@ -1,289 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bookworm-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- rm -rf /var/lib/apt/lists/*
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- rm -rf /var/lib/apt/lists/*; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.")
- --disable-phpdbg \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
- --disable-cgi \
- \
- --enable-fpm \
- --with-fpm-user=www-data \
- --with-fpm-group=www-data \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- rm -rf /var/lib/apt/lists/*; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-WORKDIR /var/www/html
-
-RUN set -eux; \
- cd "${PHP_INI_DIR%/php}"; \
- \
- cp -v php-fpm.conf.default php-fpm.conf; \
- cp -v php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- \
- # comment out localhost-only listen address
- grep -E '^listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- sed -ri 's/^(listen = 127.0.0.1:9000)/;\1/' php-fpm.d/www.conf; \
- grep -E '^;listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- \
- { \
- echo '[global]'; \
- echo 'error_log = /proc/self/fd/2'; \
- echo; echo '; https://github.com/docker-library/php/pull/725#issuecomment-443540114'; echo 'log_limit = 8192'; \
- echo; \
- echo '[www]'; \
- echo '; php-fpm closes STDOUT on startup, so sending logs to /proc/self/fd/1 does not work.'; \
- echo '; https://bugs.php.net/bug.php?id=73886'; \
- echo 'access.log = /proc/self/fd/2'; \
- echo; \
- echo 'clear_env = no'; \
- echo; \
- echo '; Ensure worker stdout and stderr are sent to the main error log.'; \
- echo 'catch_workers_output = yes'; \
- echo 'decorate_workers_output = no'; \
- echo; \
- echo '; default listen address for easy override in later php-fpm.d/*.conf files'; \
- echo 'listen = 9000'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '; the [www] ini section below is for backwards compatibility and will be removed in 8.6+'; \
- echo '[www]'; \
- } | tee php-fpm.d/zz-docker.conf; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
- { \
- echo '; https://github.com/docker-library/php/issues/878#issuecomment-938595965'; \
- echo 'fastcgi.logging = Off'; \
- } > "$PHP_INI_DIR/conf.d/docker-fpm.ini"
-
-# Override stop signal to stop process gracefully
-# https://github.com/php/php-src/blob/17baa87faddc2550def3ae7314236826bc1b1398/sapi/fpm/php-fpm.8.in#L163
-STOPSIGNAL SIGQUIT
-
-EXPOSE 9000
-CMD ["php-fpm"]
diff --git a/8.4-rc/bookworm/fpm/docker-php-entrypoint b/8.4-rc/bookworm/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.4-rc/bookworm/fpm/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php-fpm "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/bookworm/fpm/docker-php-ext-configure b/8.4-rc/bookworm/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/bookworm/fpm/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/bookworm/fpm/docker-php-ext-enable b/8.4-rc/bookworm/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/bookworm/fpm/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/bookworm/fpm/docker-php-ext-install b/8.4-rc/bookworm/fpm/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/bookworm/fpm/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/bookworm/fpm/docker-php-source b/8.4-rc/bookworm/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/bookworm/fpm/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/bookworm/zts/Dockerfile b/8.4-rc/bookworm/zts/Dockerfile
deleted file mode 100644
index 5d0ba01ca..000000000
--- a/8.4-rc/bookworm/zts/Dockerfile
+++ /dev/null
@@ -1,241 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bookworm-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- rm -rf /var/lib/apt/lists/*
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- rm -rf /var/lib/apt/lists/*; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
-# https://github.com/docker-library/php/pull/939#issuecomment-730501748
- --enable-embed \
- \
- --enable-zts \
-# https://externals.io/message/118859
- --disable-zend-signals \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- rm -rf /var/lib/apt/lists/*; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/bookworm/zts/docker-php-entrypoint b/8.4-rc/bookworm/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/bookworm/zts/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/bookworm/zts/docker-php-ext-configure b/8.4-rc/bookworm/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/bookworm/zts/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/bookworm/zts/docker-php-ext-enable b/8.4-rc/bookworm/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/bookworm/zts/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/bookworm/zts/docker-php-ext-install b/8.4-rc/bookworm/zts/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/bookworm/zts/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/bookworm/zts/docker-php-source b/8.4-rc/bookworm/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/bookworm/zts/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/trixie/apache/Dockerfile b/8.4-rc/trixie/apache/Dockerfile
deleted file mode 100644
index ec3aefa66..000000000
--- a/8.4-rc/trixie/apache/Dockerfile
+++ /dev/null
@@ -1,305 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:trixie-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- apt-get dist-clean
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-ENV APACHE_CONFDIR /etc/apache2
-ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars
-
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends apache2; \
- apt-get dist-clean; \
- \
-# generically convert lines like
-# export APACHE_RUN_USER=www-data
-# into
-# : ${APACHE_RUN_USER:=www-data}
-# export APACHE_RUN_USER
-# so that they can be overridden at runtime ("-e APACHE_RUN_USER=...")
- sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' "$APACHE_ENVVARS"; \
- \
-# setup directories and permissions
- . "$APACHE_ENVVARS"; \
- for dir in \
- "$APACHE_LOCK_DIR" \
- "$APACHE_RUN_DIR" \
- "$APACHE_LOG_DIR" \
-# https://salsa.debian.org/apache-team/apache2/-/commit/b97ca8714890ead1ba6c095699dde752e8433205
- "$APACHE_RUN_DIR/socks" \
- ; do \
- rm -rvf "$dir"; \
- mkdir -p "$dir"; \
- chown "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$dir"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- chmod 1777 "$dir"; \
- done; \
- \
-# delete the "index.html" that installing Apache drops in here
- rm -rvf /var/www/html/*; \
- \
-# logs should go to stdout / stderr
- ln -sfT /dev/stderr "$APACHE_LOG_DIR/error.log"; \
- ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log"; \
- ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log"; \
- chown -R --no-dereference "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$APACHE_LOG_DIR"
-
-# Apache + PHP requires preforking Apache for best results
-RUN a2dismod mpm_event && a2enmod mpm_prefork
-
-# PHP files should be handled by PHP, and should be preferred over any other file type
-RUN { \
- echo ''; \
- echo '\tSetHandler application/x-httpd-php'; \
- echo ''; \
- echo; \
- echo 'DirectoryIndex disabled'; \
- echo 'DirectoryIndex index.php index.html'; \
- echo; \
- echo ''; \
- echo '\tOptions -Indexes'; \
- echo '\tAllowOverride All'; \
- echo ''; \
- } | tee "$APACHE_CONFDIR/conf-available/docker-php.conf" \
- && a2enconf docker-php
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- apt-get dist-clean; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- apache2-dev \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.")
- --disable-phpdbg \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
- --disable-cgi \
- \
- --with-apxs2 \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- apt-get dist-clean; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-# https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop
-STOPSIGNAL SIGWINCH
-
-COPY apache2-foreground /usr/local/bin/
-WORKDIR /var/www/html
-
-EXPOSE 80
-CMD ["apache2-foreground"]
diff --git a/8.4-rc/trixie/apache/apache2-foreground b/8.4-rc/trixie/apache/apache2-foreground
deleted file mode 100755
index 5fe22e26f..000000000
--- a/8.4-rc/trixie/apache/apache2-foreground
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-set -e
-
-# Note: we don't just use "apache2ctl" here because it itself is just a shell-script wrapper around apache2 which provides extra functionality like "apache2ctl start" for launching apache2 in the background.
-# (also, when run as "apache2ctl ", it does not use "exec", which leaves an undesirable resident shell process)
-
-: "${APACHE_CONFDIR:=/etc/apache2}"
-: "${APACHE_ENVVARS:=$APACHE_CONFDIR/envvars}"
-if test -f "$APACHE_ENVVARS"; then
- . "$APACHE_ENVVARS"
-fi
-
-# Apache gets grumpy about PID files pre-existing
-: "${APACHE_RUN_DIR:=/var/run/apache2}"
-: "${APACHE_PID_FILE:=$APACHE_RUN_DIR/apache2.pid}"
-rm -f "$APACHE_PID_FILE"
-
-# create missing directories
-# (especially APACHE_RUN_DIR, APACHE_LOCK_DIR, and APACHE_LOG_DIR)
-for e in "${!APACHE_@}"; do
- if [[ "$e" == *_DIR ]] && [[ "${!e}" == /* ]]; then
- # handle "/var/lock" being a symlink to "/run/lock", but "/run/lock" not existing beforehand, so "/var/lock/something" fails to mkdir
- # mkdir: cannot create directory '/var/lock': File exists
- dir="${!e}"
- while [ "$dir" != "$(dirname "$dir")" ]; do
- dir="$(dirname "$dir")"
- if [ -d "$dir" ]; then
- break
- fi
- absDir="$(readlink -f "$dir" 2>/dev/null || :)"
- if [ -n "$absDir" ]; then
- mkdir -p "$absDir"
- fi
- done
-
- mkdir -p "${!e}"
- fi
-done
-
-exec apache2 -DFOREGROUND "$@"
diff --git a/8.4-rc/trixie/apache/docker-php-entrypoint b/8.4-rc/trixie/apache/docker-php-entrypoint
deleted file mode 100755
index 3d36d5e8c..000000000
--- a/8.4-rc/trixie/apache/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- apache2-foreground "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/trixie/apache/docker-php-ext-configure b/8.4-rc/trixie/apache/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/trixie/apache/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/trixie/apache/docker-php-ext-enable b/8.4-rc/trixie/apache/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/trixie/apache/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/trixie/apache/docker-php-ext-install b/8.4-rc/trixie/apache/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/trixie/apache/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/trixie/apache/docker-php-source b/8.4-rc/trixie/apache/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/trixie/apache/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/trixie/cli/Dockerfile b/8.4-rc/trixie/cli/Dockerfile
deleted file mode 100644
index 5ca67e1fc..000000000
--- a/8.4-rc/trixie/cli/Dockerfile
+++ /dev/null
@@ -1,237 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:trixie-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- apt-get dist-clean
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- apt-get dist-clean; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
-# https://github.com/docker-library/php/pull/939#issuecomment-730501748
- --enable-embed \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- apt-get dist-clean; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/trixie/cli/docker-php-entrypoint b/8.4-rc/trixie/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/trixie/cli/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/trixie/cli/docker-php-ext-configure b/8.4-rc/trixie/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/trixie/cli/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/trixie/cli/docker-php-ext-enable b/8.4-rc/trixie/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/trixie/cli/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/trixie/cli/docker-php-ext-install b/8.4-rc/trixie/cli/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/trixie/cli/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/trixie/cli/docker-php-source b/8.4-rc/trixie/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/trixie/cli/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/trixie/fpm/Dockerfile b/8.4-rc/trixie/fpm/Dockerfile
deleted file mode 100644
index 67a1a204e..000000000
--- a/8.4-rc/trixie/fpm/Dockerfile
+++ /dev/null
@@ -1,289 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:trixie-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- apt-get dist-clean
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- apt-get dist-clean; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.")
- --disable-phpdbg \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
- --disable-cgi \
- \
- --enable-fpm \
- --with-fpm-user=www-data \
- --with-fpm-group=www-data \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- apt-get dist-clean; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-WORKDIR /var/www/html
-
-RUN set -eux; \
- cd "${PHP_INI_DIR%/php}"; \
- \
- cp -v php-fpm.conf.default php-fpm.conf; \
- cp -v php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- \
- # comment out localhost-only listen address
- grep -E '^listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- sed -ri 's/^(listen = 127.0.0.1:9000)/;\1/' php-fpm.d/www.conf; \
- grep -E '^;listen = 127.0.0.1:9000' php-fpm.d/www.conf; \
- \
- { \
- echo '[global]'; \
- echo 'error_log = /proc/self/fd/2'; \
- echo; echo '; https://github.com/docker-library/php/pull/725#issuecomment-443540114'; echo 'log_limit = 8192'; \
- echo; \
- echo '[www]'; \
- echo '; php-fpm closes STDOUT on startup, so sending logs to /proc/self/fd/1 does not work.'; \
- echo '; https://bugs.php.net/bug.php?id=73886'; \
- echo 'access.log = /proc/self/fd/2'; \
- echo; \
- echo 'clear_env = no'; \
- echo; \
- echo '; Ensure worker stdout and stderr are sent to the main error log.'; \
- echo 'catch_workers_output = yes'; \
- echo 'decorate_workers_output = no'; \
- echo; \
- echo '; default listen address for easy override in later php-fpm.d/*.conf files'; \
- echo 'listen = 9000'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '; the [www] ini section below is for backwards compatibility and will be removed in 8.6+'; \
- echo '[www]'; \
- } | tee php-fpm.d/zz-docker.conf; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
- { \
- echo '; https://github.com/docker-library/php/issues/878#issuecomment-938595965'; \
- echo 'fastcgi.logging = Off'; \
- } > "$PHP_INI_DIR/conf.d/docker-fpm.ini"
-
-# Override stop signal to stop process gracefully
-# https://github.com/php/php-src/blob/17baa87faddc2550def3ae7314236826bc1b1398/sapi/fpm/php-fpm.8.in#L163
-STOPSIGNAL SIGQUIT
-
-EXPOSE 9000
-CMD ["php-fpm"]
diff --git a/8.4-rc/trixie/fpm/docker-php-entrypoint b/8.4-rc/trixie/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.4-rc/trixie/fpm/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php-fpm "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/trixie/fpm/docker-php-ext-configure b/8.4-rc/trixie/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/trixie/fpm/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/trixie/fpm/docker-php-ext-enable b/8.4-rc/trixie/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/trixie/fpm/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/trixie/fpm/docker-php-ext-install b/8.4-rc/trixie/fpm/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/trixie/fpm/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/trixie/fpm/docker-php-source b/8.4-rc/trixie/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/trixie/fpm/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4-rc/trixie/zts/Dockerfile b/8.4-rc/trixie/zts/Dockerfile
deleted file mode 100644
index 1e9572aba..000000000
--- a/8.4-rc/trixie/zts/Dockerfile
+++ /dev/null
@@ -1,241 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:trixie-slim
-
-# prevent Debian's PHP packages from being installed
-# https://github.com/docker-library/php/pull/542
-RUN set -eux; \
- { \
- echo 'Package: php*'; \
- echo 'Pin: release *'; \
- echo 'Pin-Priority: -1'; \
- } > /etc/apt/preferences.d/no-debian-php
-
-# dependencies required for running "phpize"
-# (see persistent deps below)
-ENV PHPIZE_DEPS \
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkg-config \
- re2c
-
-# persistent / runtime deps
-RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- $PHPIZE_DEPS \
- ca-certificates \
- curl \
- xz-utils \
- ; \
- apt-get dist-clean
-
-ENV PHP_INI_DIR /usr/local/etc/php
-RUN set -eux; \
- mkdir -p "$PHP_INI_DIR/conf.d"; \
-# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743)
- [ ! -d /var/www/html ]; \
- mkdir -p /var/www/html; \
- chown www-data:www-data /var/www/html; \
- chmod 1777 /var/www/html
-
-# Apply stack smash protection to functions using local buffers and alloca()
-# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
-# Enable optimization (-O2)
-# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default)
-# https://github.com/docker-library/php/issues/272
-# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php)
-ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-ENV PHP_CPPFLAGS="$PHP_CFLAGS"
-ENV PHP_LDFLAGS="-Wl,-O1 -pie"
-
-ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-
-ENV PHP_VERSION 8.4.26RC1
-ENV PHP_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc"
-ENV PHP_SHA256="c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37"
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends gnupg; \
- apt-get dist-clean; \
- \
- mkdir -p /usr/src; \
- cd /usr/src; \
- \
- curl -fsSL -o php.tar.xz "$PHP_URL"; \
- \
- if [ -n "$PHP_SHA256" ]; then \
- echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \
- fi; \
- \
- curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
- done; \
- gpg --batch --verify php.tar.xz.asc php.tar.xz; \
- gpgconf --kill all; \
- rm -rf "$GNUPGHOME"; \
- \
- apt-mark auto '.*' > /dev/null; \
- apt-mark manual $savedAptMark > /dev/null; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
-
-COPY docker-php-source /usr/local/bin/
-
-RUN set -eux; \
- \
- savedAptMark="$(apt-mark showmanual)"; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- libargon2-dev \
- libcurl4-openssl-dev \
- libonig-dev \
- libreadline-dev \
- libsodium-dev \
- libsqlite3-dev \
- libssl-dev \
- libxml2-dev \
- zlib1g-dev \
- ; \
- \
- export \
- CFLAGS="$PHP_CFLAGS" \
- CPPFLAGS="$PHP_CPPFLAGS" \
- LDFLAGS="$PHP_LDFLAGS" \
-# https://github.com/php/php-src/blob/d6299206dd828382753453befd1b915491b741c6/configure.ac#L1496-L1511
- PHP_BUILD_PROVIDER='https://github.com/docker-library/php' \
- PHP_UNAME='Linux - Docker' \
- ; \
- docker-php-source extract; \
- cd /usr/src/php; \
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
- debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \
-# https://bugs.php.net/bug.php?id=74125
- if [ ! -d /usr/include/curl ]; then \
- ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \
- fi; \
- case "$gnuArch" in \
- 'i686-linux-'*) \
- # php zend jit assumes SSE registers, xmm0-7, are available (and "Pentium4"/SSE2 is a reasonable baseline)
- # https://github.com/php/php-src/pull/22832
- # so, allow it and use SSE/SSE2 floating-point unit instead of the legacy stack
- export \
- CFLAGS="$CFLAGS -msse2 -mfpmath=sse" \
- CPPFLAGS="$CPPFLAGS -msse2 -mfpmath=sse" \
- ; \
- ;; \
- esac; \
- test "$PHP_INI_DIR" != "${PHP_INI_DIR%/php}"; \
- ./configure \
- --build="$gnuArch" \
- --sysconfdir="${PHP_INI_DIR%/php}" \
- --with-config-file-path="$PHP_INI_DIR" \
- --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \
- \
-# make sure invalid --configure-flags are fatal errors instead of just warnings
- --enable-option-checking=fatal \
- \
-# https://github.com/docker-library/php/issues/439
- --with-mhash \
- \
-# https://github.com/docker-library/php/issues/822
- --with-pic \
- \
-# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195)
- --enable-mbstring \
-# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself)
- --enable-mysqlnd \
-# https://wiki.php.net/rfc/argon2_password_hash
- --with-password-argon2 \
-# https://wiki.php.net/rfc/libsodium
- --with-sodium=shared \
-# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109)
- --with-pdo-sqlite=/usr \
- --with-sqlite3=/usr \
- \
- --with-curl \
- --with-iconv \
- --with-openssl \
- --with-readline \
- --with-zlib \
- \
-# https://github.com/docker-library/php/pull/1259
- --enable-phpdbg \
- --enable-phpdbg-readline \
- \
-# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear")
- --with-pear \
- \
- --with-libdir="lib/$debMultiarch" \
- \
-# https://github.com/docker-library/php/pull/939#issuecomment-730501748
- --enable-embed \
- \
- --enable-zts \
-# https://externals.io/message/118859
- --disable-zend-signals \
- ; \
- make -j "$(nproc)"; \
- find -type f -name '*.a' -delete; \
- make install; \
- find \
- /usr/local \
- -type f \
- -perm '/0111' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || : \
- ' -- '{}' + \
- ; \
- make clean; \
- \
-# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable)
- cp -v php.ini-* "$PHP_INI_DIR/"; \
- \
- cd /; \
- docker-php-source delete; \
- \
-# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
- apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
- find /usr/local -type f -executable -exec ldd '{}' ';' \
- | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' \
- | sort -u \
- | xargs -rt dpkg-query --search \
-# https://manpages.debian.org/trixie/dpkg/dpkg-query.1.en.html#S (we ignore diversions and it'll be really unusual for more than one package to provide any given .so file)
- | awk 'sub(":$", "", $1) { print $1 }' \
- | sort -u \
- | xargs -r apt-mark manual \
- ; \
- apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
- apt-get dist-clean; \
- \
-# update pecl channel definitions https://github.com/docker-library/php/issues/443
- pecl update-channels; \
- rm -rf /tmp/pear ~/.pearrc; \
- \
-# smoke test
- php --version
-
-COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/
-
-# enable OPcache by default (https://wiki.php.net/rfc/make_opcache_required)
-RUN docker-php-ext-enable opcache
-
-# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598)
-RUN docker-php-ext-enable sodium
-
-ENTRYPOINT ["docker-php-entrypoint"]
-CMD ["php", "-a"]
diff --git a/8.4-rc/trixie/zts/docker-php-entrypoint b/8.4-rc/trixie/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.4-rc/trixie/zts/docker-php-entrypoint
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-set -e
-
-# first arg is `-f` or `--some-option`
-if [ "${1#-}" != "$1" ]; then
- set -- php "$@"
-fi
-
-exec "$@"
diff --git a/8.4-rc/trixie/zts/docker-php-ext-configure b/8.4-rc/trixie/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.4-rc/trixie/zts/docker-php-ext-configure
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 ext-name [configure flags]"
- echo " ie: $0 gd --with-jpeg-dir=/usr/local/something"
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-ext="$1"
-if [ -z "$ext" ] || [ ! -d "$ext" ]; then
- usage >&2
- exit 1
-fi
-shift
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS
- fi
-fi
-
-if command -v dpkg-architecture > /dev/null; then
- gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
- set -- --build="$gnuArch" "$@"
-fi
-
-cd "$ext"
-phpize
-./configure --enable-option-checking=fatal "$@"
diff --git a/8.4-rc/trixie/zts/docker-php-ext-enable b/8.4-rc/trixie/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.4-rc/trixie/zts/docker-php-ext-enable
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/sh
-set -e
-
-extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')"
-cd "$extDir"
-
-usage() {
- echo "usage: $0 [options] module-name [module-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 --ini-name 0-apc.ini apcu apc"
- echo
- echo 'Possible values for module-name:'
- find -maxdepth 1 \
- -type f \
- -name '*.so' \
- -exec basename '{}' ';' \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-modules=
-for module; do
- if [ -z "$module" ]; then
- continue
- fi
- if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then
- echo >&2 "error: '$module' does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- modules="$modules $module"
-done
-
-if [ -z "$modules" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if \
- [ -n "$PHPIZE_DEPS" ] \
- && ! apk info --installed .phpize-deps > /dev/null \
- && ! apk info --installed .phpize-deps-configure > /dev/null \
- ; then
- apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils
- apkDel='.docker-php-ext-enable-deps'
- fi
-fi
-
-for module in $modules; do
- moduleFile="$module"
- if [ -f "$module.so" ] && ! [ -f "$module" ]; then
- moduleFile="$module.so"
- fi
- if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then
- # https://wiki.php.net/internals/extensions#loading_zend_extensions
- line="zend_extension=$module"
- else
- line="extension=$module"
- fi
-
- ext="$(basename "$module")"
- ext="${ext%.*}"
- if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then
- # this isn't perfect, but it's better than nothing
- # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache')
- echo >&2
- echo >&2 "warning: $ext ($module) is already loaded!"
- echo >&2
- continue
- fi
-
- case "$iniName" in
- /*)
- # allow an absolute path
- ini="$iniName"
- ;;
- *)
- ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
- ;;
- esac
- if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then
- echo "$line" >> "$ini"
- fi
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
diff --git a/8.4-rc/trixie/zts/docker-php-ext-install b/8.4-rc/trixie/zts/docker-php-ext-install
deleted file mode 100755
index fbf44849c..000000000
--- a/8.4-rc/trixie/zts/docker-php-ext-install
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/sh
-set -e
-
-# prefer user supplied CFLAGS, but default to our PHP_CFLAGS
-: ${CFLAGS:=$PHP_CFLAGS}
-: ${CPPFLAGS:=$PHP_CPPFLAGS}
-: ${LDFLAGS:=$PHP_LDFLAGS}
-export CFLAGS CPPFLAGS LDFLAGS
-
-srcExists=
-if [ -d /usr/src/php ]; then
- srcExists=1
-fi
-docker-php-source extract
-if [ -z "$srcExists" ]; then
- touch /usr/src/php/.docker-delete-me
-fi
-
-cd /usr/src/php/ext
-
-usage() {
- echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]"
- echo " ie: $0 gd mysqli"
- echo " $0 pdo pdo_mysql"
- echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
- echo
- echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
- echo
- echo 'Possible values for ext-name:'
- find . \
- -mindepth 2 \
- -maxdepth 2 \
- -type f \
- -name 'config.m4' \
- | xargs -n1 dirname \
- | xargs -n1 basename \
- | sort \
- | xargs
- echo
- echo 'Some of the above modules are already compiled into PHP; please check'
- echo 'the output of "php -i" to see which modules are already loaded.'
-}
-
-opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })"
-eval set -- "$opts"
-
-j=1
-iniName=
-while true; do
- flag="$1"
- shift
- case "$flag" in
- --help|-h|'-?') usage && exit 0 ;;
- --ini-name) iniName="$1" && shift ;;
- --jobs|-j) j="$1" && shift ;;
- --) break ;;
- *)
- {
- echo "error: unknown flag: $flag"
- usage
- } >&2
- exit 1
- ;;
- esac
-done
-
-exts=
-for ext; do
- if [ -z "$ext" ]; then
- continue
- fi
- if [ ! -d "$ext" ]; then
- echo >&2 "error: $PWD/$ext does not exist"
- echo >&2
- usage >&2
- exit 1
- fi
- exts="$exts $ext"
-done
-
-if [ -z "$exts" ]; then
- usage >&2
- exit 1
-fi
-
-pm='unknown'
-if [ -e /lib/apk/db/installed ]; then
- pm='apk'
-fi
-
-apkDel=
-if [ "$pm" = 'apk' ]; then
- if [ -n "$PHPIZE_DEPS" ]; then
- if apk info --installed .phpize-deps-configure > /dev/null; then
- apkDel='.phpize-deps-configure'
- elif ! apk info --installed .phpize-deps > /dev/null; then
- apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS
- apkDel='.phpize-deps'
- fi
- fi
-fi
-
-popDir="$PWD"
-for ext in $exts; do
- cd "$ext"
-
- [ -e Makefile ] || docker-php-ext-configure "$ext"
-
- make -j"$j"
-
- if ! php -n -d 'display_errors=stderr' -r 'exit(ZEND_DEBUG_BUILD ? 0 : 1);' > /dev/null; then
- # only "strip" modules if we aren't using a debug build of PHP
- # (none of our builds are debug builds, but PHP might be recompiled with "--enable-debug" configure option)
- # https://github.com/docker-library/php/issues/1268
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec sh -euxc ' \
- strip --strip-all "$@" || :
- ' -- '{}' +
- fi
-
- make -j"$j" install
-
- find modules \
- -maxdepth 1 \
- -name '*.so' \
- -exec basename '{}' '.so' ';' \
- | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"}
-
- make -j"$j" clean
-
- cd "$popDir"
-done
-
-if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
- apk del --no-network $apkDel
-fi
-
-if [ -e /usr/src/php/.docker-delete-me ]; then
- docker-php-source delete
-fi
diff --git a/8.4-rc/trixie/zts/docker-php-source b/8.4-rc/trixie/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.4-rc/trixie/zts/docker-php-source
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-set -e
-
-dir=/usr/src/php
-
-usage() {
- echo "usage: $0 COMMAND"
- echo
- echo "Manage php source tarball lifecycle."
- echo
- echo "Commands:"
- echo " extract extract php source tarball into directory $dir if not already done."
- echo " delete delete extracted php source located into $dir if not already done."
- echo
-}
-
-case "$1" in
- extract)
- mkdir -p "$dir"
- if [ ! -f "$dir/.docker-extracted" ]; then
- tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1
- touch "$dir/.docker-extracted"
- fi
- ;;
-
- delete)
- rm -rf "$dir"
- ;;
-
- *)
- usage
- exit 1
- ;;
-esac
diff --git a/8.4/alpine3.23/cli/Dockerfile b/8.4/alpine3.23/cli/Dockerfile
index 2611118a2..054fe9c3f 100644
--- a/8.4/alpine3.23/cli/Dockerfile
+++ b/8.4/alpine3.23/cli/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/alpine3.23/fpm/Dockerfile b/8.4/alpine3.23/fpm/Dockerfile
index 6ab815f07..896347aad 100644
--- a/8.4/alpine3.23/fpm/Dockerfile
+++ b/8.4/alpine3.23/fpm/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/alpine3.23/zts/Dockerfile b/8.4/alpine3.23/zts/Dockerfile
index 0c88d6964..53743616e 100644
--- a/8.4/alpine3.23/zts/Dockerfile
+++ b/8.4/alpine3.23/zts/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/alpine3.24/cli/Dockerfile b/8.4/alpine3.24/cli/Dockerfile
index 320921c49..97f87a6c1 100644
--- a/8.4/alpine3.24/cli/Dockerfile
+++ b/8.4/alpine3.24/cli/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/alpine3.24/fpm/Dockerfile b/8.4/alpine3.24/fpm/Dockerfile
index 7444a961c..2672cf243 100644
--- a/8.4/alpine3.24/fpm/Dockerfile
+++ b/8.4/alpine3.24/fpm/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/alpine3.24/zts/Dockerfile b/8.4/alpine3.24/zts/Dockerfile
index 93c791bc3..d255e64e1 100644
--- a/8.4/alpine3.24/zts/Dockerfile
+++ b/8.4/alpine3.24/zts/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/bookworm/apache/Dockerfile b/8.4/bookworm/apache/Dockerfile
index f50628e6b..762e93dd2 100644
--- a/8.4/bookworm/apache/Dockerfile
+++ b/8.4/bookworm/apache/Dockerfile
@@ -120,9 +120,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/bookworm/cli/Dockerfile b/8.4/bookworm/cli/Dockerfile
index 423cb3cff..e03f04fc6 100644
--- a/8.4/bookworm/cli/Dockerfile
+++ b/8.4/bookworm/cli/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/bookworm/fpm/Dockerfile b/8.4/bookworm/fpm/Dockerfile
index b1ed66b8c..f95e2d222 100644
--- a/8.4/bookworm/fpm/Dockerfile
+++ b/8.4/bookworm/fpm/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/bookworm/zts/Dockerfile b/8.4/bookworm/zts/Dockerfile
index 0b86174ac..850383677 100644
--- a/8.4/bookworm/zts/Dockerfile
+++ b/8.4/bookworm/zts/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/trixie/apache/Dockerfile b/8.4/trixie/apache/Dockerfile
index 6333f3cc5..94f028552 100644
--- a/8.4/trixie/apache/Dockerfile
+++ b/8.4/trixie/apache/Dockerfile
@@ -120,9 +120,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/trixie/cli/Dockerfile b/8.4/trixie/cli/Dockerfile
index a51b79889..2f5b1a9f1 100644
--- a/8.4/trixie/cli/Dockerfile
+++ b/8.4/trixie/cli/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/trixie/fpm/Dockerfile b/8.4/trixie/fpm/Dockerfile
index 5994ce3c8..f71f78ec6 100644
--- a/8.4/trixie/fpm/Dockerfile
+++ b/8.4/trixie/fpm/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.4/trixie/zts/Dockerfile b/8.4/trixie/zts/Dockerfile
index 9ea180b66..818f4264a 100644
--- a/8.4/trixie/zts/Dockerfile
+++ b/8.4/trixie/zts/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS AFD8691FDAEDF03BDF6E460563F15A9B715376CA 9D7F99A0CB8F05C8A6958D6256A97AF7600A39A6 0616E93D95AF471243E26761770426E17EBBB3DD
-ENV PHP_VERSION 8.4.25
-ENV PHP_URL="https://www.php.net/distributions/php-8.4.25.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.25.tar.xz.asc"
-ENV PHP_SHA256="dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848"
+ENV PHP_VERSION 8.4.26
+ENV PHP_URL="https://www.php.net/distributions/php-8.4.26.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.4.26.tar.xz.asc"
+ENV PHP_SHA256="32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1"
RUN set -eux; \
\
diff --git a/8.5/alpine3.23/cli/Dockerfile b/8.5/alpine3.23/cli/Dockerfile
index d3971cda1..8b27c7bb5 100644
--- a/8.5/alpine3.23/cli/Dockerfile
+++ b/8.5/alpine3.23/cli/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/alpine3.23/fpm/Dockerfile b/8.5/alpine3.23/fpm/Dockerfile
index 1ed1c1d7c..c5595fafb 100644
--- a/8.5/alpine3.23/fpm/Dockerfile
+++ b/8.5/alpine3.23/fpm/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/alpine3.23/zts/Dockerfile b/8.5/alpine3.23/zts/Dockerfile
index d997e83bc..b4a779144 100644
--- a/8.5/alpine3.23/zts/Dockerfile
+++ b/8.5/alpine3.23/zts/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/alpine3.24/cli/Dockerfile b/8.5/alpine3.24/cli/Dockerfile
index 0e97a7ecd..606bd7e56 100644
--- a/8.5/alpine3.24/cli/Dockerfile
+++ b/8.5/alpine3.24/cli/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/alpine3.24/fpm/Dockerfile b/8.5/alpine3.24/fpm/Dockerfile
index 65b9c2b4b..cf92b6147 100644
--- a/8.5/alpine3.24/fpm/Dockerfile
+++ b/8.5/alpine3.24/fpm/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/alpine3.24/zts/Dockerfile b/8.5/alpine3.24/zts/Dockerfile
index 7a05f86e5..fb9029b93 100644
--- a/8.5/alpine3.24/zts/Dockerfile
+++ b/8.5/alpine3.24/zts/Dockerfile
@@ -56,9 +56,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/bookworm/apache/Dockerfile b/8.5/bookworm/apache/Dockerfile
index 6abee3372..c7c0bba52 100644
--- a/8.5/bookworm/apache/Dockerfile
+++ b/8.5/bookworm/apache/Dockerfile
@@ -120,9 +120,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/bookworm/cli/Dockerfile b/8.5/bookworm/cli/Dockerfile
index 1e11bfbb1..bab9605f9 100644
--- a/8.5/bookworm/cli/Dockerfile
+++ b/8.5/bookworm/cli/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/bookworm/fpm/Dockerfile b/8.5/bookworm/fpm/Dockerfile
index 1b246d50e..fa4ef1edd 100644
--- a/8.5/bookworm/fpm/Dockerfile
+++ b/8.5/bookworm/fpm/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/bookworm/zts/Dockerfile b/8.5/bookworm/zts/Dockerfile
index 7965dc62b..a88d4573b 100644
--- a/8.5/bookworm/zts/Dockerfile
+++ b/8.5/bookworm/zts/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/trixie/apache/Dockerfile b/8.5/trixie/apache/Dockerfile
index aa9a4ace3..f71884212 100644
--- a/8.5/trixie/apache/Dockerfile
+++ b/8.5/trixie/apache/Dockerfile
@@ -120,9 +120,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/trixie/cli/Dockerfile b/8.5/trixie/cli/Dockerfile
index 8abfc9d17..c363337af 100644
--- a/8.5/trixie/cli/Dockerfile
+++ b/8.5/trixie/cli/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/trixie/fpm/Dockerfile b/8.5/trixie/fpm/Dockerfile
index cc231857f..9ec3adfc5 100644
--- a/8.5/trixie/fpm/Dockerfile
+++ b/8.5/trixie/fpm/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/8.5/trixie/zts/Dockerfile b/8.5/trixie/zts/Dockerfile
index 7cd7f7c3b..f413995ca 100644
--- a/8.5/trixie/zts/Dockerfile
+++ b/8.5/trixie/zts/Dockerfile
@@ -60,9 +60,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie"
ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 49D9AF6BC72A80D6691719C8AA23F5BE9C7097D4 D95C03BC702BE9515344AE3374E44BC9067701A5
-ENV PHP_VERSION 8.5.10
-ENV PHP_URL="https://www.php.net/distributions/php-8.5.10.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.10.tar.xz.asc"
-ENV PHP_SHA256="6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957"
+ENV PHP_VERSION 8.5.11
+ENV PHP_URL="https://www.php.net/distributions/php-8.5.11.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.5.11.tar.xz.asc"
+ENV PHP_SHA256="d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360"
RUN set -eux; \
\
diff --git a/versions.json b/versions.json
index 94719544b..c5c320135 100644
--- a/versions.json
+++ b/versions.json
@@ -1,9 +1,9 @@
{
"8.2": {
- "version": "8.2.33",
- "url": "https://www.php.net/distributions/php-8.2.33.tar.xz",
- "ascUrl": "https://www.php.net/distributions/php-8.2.33.tar.xz.asc",
- "sha256": "fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1",
+ "version": "8.2.34",
+ "url": "https://www.php.net/distributions/php-8.2.34.tar.xz",
+ "ascUrl": "https://www.php.net/distributions/php-8.2.34.tar.xz.asc",
+ "sha256": "5351330c54de240f54f7527c26ef292e239749e6fe11db0330acb5317e02bb39",
"variants": [
"trixie/cli",
"trixie/apache",
@@ -46,32 +46,10 @@
},
"8.3-rc": null,
"8.4": {
- "version": "8.4.25",
- "url": "https://www.php.net/distributions/php-8.4.25.tar.xz",
- "ascUrl": "https://www.php.net/distributions/php-8.4.25.tar.xz.asc",
- "sha256": "dc1ad8b4109898d9db49744450403874858c23efc685b1032a50bd1e83906848",
- "variants": [
- "trixie/cli",
- "trixie/apache",
- "trixie/fpm",
- "trixie/zts",
- "bookworm/cli",
- "bookworm/apache",
- "bookworm/fpm",
- "bookworm/zts",
- "alpine3.24/cli",
- "alpine3.24/fpm",
- "alpine3.24/zts",
- "alpine3.23/cli",
- "alpine3.23/fpm",
- "alpine3.23/zts"
- ]
- },
- "8.4-rc": {
- "version": "8.4.26RC1",
- "url": "https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz",
- "ascUrl": "https://downloads.php.net/~saki/php-8.4.26RC1.tar.xz.asc",
- "sha256": "c6e6f52752510c3b3fbaf9e34a9ec37fb17f6741fb8b2637d6804a8a71c4fc37",
+ "version": "8.4.26",
+ "url": "https://www.php.net/distributions/php-8.4.26.tar.xz",
+ "ascUrl": "https://www.php.net/distributions/php-8.4.26.tar.xz.asc",
+ "sha256": "32a2de53862ad44ed4a5005244ce4f1b50c271e74dced215449a4443b40569f1",
"variants": [
"trixie/cli",
"trixie/apache",
@@ -89,11 +67,12 @@
"alpine3.23/zts"
]
},
+ "8.4-rc": null,
"8.5": {
- "version": "8.5.10",
- "url": "https://www.php.net/distributions/php-8.5.10.tar.xz",
- "ascUrl": "https://www.php.net/distributions/php-8.5.10.tar.xz.asc",
- "sha256": "6a8bebaa4d5a979a38db29a9373e9851f60c6b11f72172c585947e78f3081957",
+ "version": "8.5.11",
+ "url": "https://www.php.net/distributions/php-8.5.11.tar.xz",
+ "ascUrl": "https://www.php.net/distributions/php-8.5.11.tar.xz.asc",
+ "sha256": "d9be75c08e8c316f4c8f4194d8fbe1750a15f6a6d9d4e3fe72082abeeb800360",
"variants": [
"trixie/cli",
"trixie/apache",