diff --git a/8.3-rc/alpine3.19/cli/Dockerfile b/8.3-rc/alpine3.19/cli/Dockerfile
deleted file mode 100644
index b8b2c3885..000000000
--- a/8.3-rc/alpine3.19/cli/Dockerfile
+++ /dev/null
@@ -1,203 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.19
-
-# 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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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)"; \
- ./configure \
- --build="$gnuArch" \
- --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/
-
-# 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.3-rc/alpine3.19/cli/docker-php-entrypoint b/8.3-rc/alpine3.19/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/cli/docker-php-ext-configure b/8.3-rc/alpine3.19/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/cli/docker-php-ext-enable b/8.3-rc/alpine3.19/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/cli/docker-php-ext-install b/8.3-rc/alpine3.19/cli/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/alpine3.19/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 '{}' ';' \
- | 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.3-rc/alpine3.19/cli/docker-php-source b/8.3-rc/alpine3.19/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/fpm/Dockerfile b/8.3-rc/alpine3.19/fpm/Dockerfile
deleted file mode 100644
index 592d5c762..000000000
--- a/8.3-rc/alpine3.19/fpm/Dockerfile
+++ /dev/null
@@ -1,259 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.19
-
-# 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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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)"; \
- ./configure \
- --build="$gnuArch" \
- --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/
-
-# 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 /usr/local/etc; \
- if [ -d php-fpm.d ]; then \
- # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf"
- sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \
- cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- else \
- # PHP 5.x doesn't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency
- mkdir php-fpm.d; \
- cp php-fpm.conf.default php-fpm.d/www.conf; \
- { \
- echo '[global]'; \
- echo 'include=etc/php-fpm.d/*.conf'; \
- } | tee php-fpm.conf; \
- fi; \
- { \
- 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'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '[www]'; \
- echo 'listen = 9000'; \
- } | 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.3-rc/alpine3.19/fpm/docker-php-entrypoint b/8.3-rc/alpine3.19/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/fpm/docker-php-ext-configure b/8.3-rc/alpine3.19/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/fpm/docker-php-ext-enable b/8.3-rc/alpine3.19/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/fpm/docker-php-ext-install b/8.3-rc/alpine3.19/fpm/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/alpine3.19/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 '{}' ';' \
- | 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.3-rc/alpine3.19/fpm/docker-php-source b/8.3-rc/alpine3.19/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/zts/Dockerfile b/8.3-rc/alpine3.19/zts/Dockerfile
deleted file mode 100644
index a87c45e87..000000000
--- a/8.3-rc/alpine3.19/zts/Dockerfile
+++ /dev/null
@@ -1,210 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.19
-
-# 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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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)"; \
- ./configure \
- --build="$gnuArch" \
- --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/
-
-# 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.3-rc/alpine3.19/zts/docker-php-entrypoint b/8.3-rc/alpine3.19/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/zts/docker-php-ext-configure b/8.3-rc/alpine3.19/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/zts/docker-php-ext-enable b/8.3-rc/alpine3.19/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.19/zts/docker-php-ext-install b/8.3-rc/alpine3.19/zts/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/alpine3.19/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 '{}' ';' \
- | 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.3-rc/alpine3.19/zts/docker-php-source b/8.3-rc/alpine3.19/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/alpine3.19/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.3-rc/alpine3.20/cli/Dockerfile b/8.3-rc/alpine3.20/cli/Dockerfile
deleted file mode 100644
index 43be5e538..000000000
--- a/8.3-rc/alpine3.20/cli/Dockerfile
+++ /dev/null
@@ -1,203 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.20
-
-# 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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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)"; \
- ./configure \
- --build="$gnuArch" \
- --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/
-
-# 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.3-rc/alpine3.20/cli/docker-php-entrypoint b/8.3-rc/alpine3.20/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/cli/docker-php-ext-configure b/8.3-rc/alpine3.20/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/cli/docker-php-ext-enable b/8.3-rc/alpine3.20/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/cli/docker-php-ext-install b/8.3-rc/alpine3.20/cli/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/alpine3.20/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 '{}' ';' \
- | 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.3-rc/alpine3.20/cli/docker-php-source b/8.3-rc/alpine3.20/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/fpm/Dockerfile b/8.3-rc/alpine3.20/fpm/Dockerfile
deleted file mode 100644
index db6fa1174..000000000
--- a/8.3-rc/alpine3.20/fpm/Dockerfile
+++ /dev/null
@@ -1,259 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.20
-
-# 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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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)"; \
- ./configure \
- --build="$gnuArch" \
- --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/
-
-# 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 /usr/local/etc; \
- if [ -d php-fpm.d ]; then \
- # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf"
- sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \
- cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- else \
- # PHP 5.x doesn't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency
- mkdir php-fpm.d; \
- cp php-fpm.conf.default php-fpm.d/www.conf; \
- { \
- echo '[global]'; \
- echo 'include=etc/php-fpm.d/*.conf'; \
- } | tee php-fpm.conf; \
- fi; \
- { \
- 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'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '[www]'; \
- echo 'listen = 9000'; \
- } | 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.3-rc/alpine3.20/fpm/docker-php-entrypoint b/8.3-rc/alpine3.20/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/fpm/docker-php-ext-configure b/8.3-rc/alpine3.20/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/fpm/docker-php-ext-enable b/8.3-rc/alpine3.20/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/fpm/docker-php-ext-install b/8.3-rc/alpine3.20/fpm/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/alpine3.20/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 '{}' ';' \
- | 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.3-rc/alpine3.20/fpm/docker-php-source b/8.3-rc/alpine3.20/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/zts/Dockerfile b/8.3-rc/alpine3.20/zts/Dockerfile
deleted file mode 100644
index 6243ad7f9..000000000
--- a/8.3-rc/alpine3.20/zts/Dockerfile
+++ /dev/null
@@ -1,210 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM alpine:3.20
-
-# 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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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)"; \
- ./configure \
- --build="$gnuArch" \
- --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/
-
-# 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.3-rc/alpine3.20/zts/docker-php-entrypoint b/8.3-rc/alpine3.20/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/zts/docker-php-ext-configure b/8.3-rc/alpine3.20/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/zts/docker-php-ext-enable b/8.3-rc/alpine3.20/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/alpine3.20/zts/docker-php-ext-install b/8.3-rc/alpine3.20/zts/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/alpine3.20/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 '{}' ';' \
- | 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.3-rc/alpine3.20/zts/docker-php-source b/8.3-rc/alpine3.20/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/alpine3.20/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.3-rc/bookworm/apache/Dockerfile b/8.3-rc/bookworm/apache/Dockerfile
deleted file mode 100644
index 4da50be39..000000000
--- a/8.3-rc/bookworm/apache/Dockerfile
+++ /dev/null
@@ -1,290 +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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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.3-rc/bookworm/apache/apache2-foreground b/8.3-rc/bookworm/apache/apache2-foreground
deleted file mode 100755
index 5fe22e26f..000000000
--- a/8.3-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.3-rc/bookworm/apache/docker-php-entrypoint b/8.3-rc/bookworm/apache/docker-php-entrypoint
deleted file mode 100755
index 3d36d5e8c..000000000
--- a/8.3-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.3-rc/bookworm/apache/docker-php-ext-configure b/8.3-rc/bookworm/apache/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-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.3-rc/bookworm/apache/docker-php-ext-enable b/8.3-rc/bookworm/apache/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-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.3-rc/bookworm/apache/docker-php-ext-install b/8.3-rc/bookworm/apache/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-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 '{}' ';' \
- | 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.3-rc/bookworm/apache/docker-php-source b/8.3-rc/bookworm/apache/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-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.3-rc/bookworm/cli/Dockerfile b/8.3-rc/bookworm/cli/Dockerfile
deleted file mode 100644
index 8cce8f418..000000000
--- a/8.3-rc/bookworm/cli/Dockerfile
+++ /dev/null
@@ -1,222 +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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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.3-rc/bookworm/cli/docker-php-entrypoint b/8.3-rc/bookworm/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-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.3-rc/bookworm/cli/docker-php-ext-configure b/8.3-rc/bookworm/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-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.3-rc/bookworm/cli/docker-php-ext-enable b/8.3-rc/bookworm/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-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.3-rc/bookworm/cli/docker-php-ext-install b/8.3-rc/bookworm/cli/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-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 '{}' ';' \
- | 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.3-rc/bookworm/cli/docker-php-source b/8.3-rc/bookworm/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-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.3-rc/bookworm/fpm/Dockerfile b/8.3-rc/bookworm/fpm/Dockerfile
deleted file mode 100644
index f7091d5f8..000000000
--- a/8.3-rc/bookworm/fpm/Dockerfile
+++ /dev/null
@@ -1,275 +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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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 /usr/local/etc; \
- if [ -d php-fpm.d ]; then \
- # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf"
- sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \
- cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- else \
- # PHP 5.x doesn't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency
- mkdir php-fpm.d; \
- cp php-fpm.conf.default php-fpm.d/www.conf; \
- { \
- echo '[global]'; \
- echo 'include=etc/php-fpm.d/*.conf'; \
- } | tee php-fpm.conf; \
- fi; \
- { \
- 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'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '[www]'; \
- echo 'listen = 9000'; \
- } | 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.3-rc/bookworm/fpm/docker-php-entrypoint b/8.3-rc/bookworm/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.3-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.3-rc/bookworm/fpm/docker-php-ext-configure b/8.3-rc/bookworm/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-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.3-rc/bookworm/fpm/docker-php-ext-enable b/8.3-rc/bookworm/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-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.3-rc/bookworm/fpm/docker-php-ext-install b/8.3-rc/bookworm/fpm/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-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 '{}' ';' \
- | 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.3-rc/bookworm/fpm/docker-php-source b/8.3-rc/bookworm/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-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.3-rc/bookworm/zts/Dockerfile b/8.3-rc/bookworm/zts/Dockerfile
deleted file mode 100644
index 21ac4b9d3..000000000
--- a/8.3-rc/bookworm/zts/Dockerfile
+++ /dev/null
@@ -1,226 +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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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.3-rc/bookworm/zts/docker-php-entrypoint b/8.3-rc/bookworm/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-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.3-rc/bookworm/zts/docker-php-ext-configure b/8.3-rc/bookworm/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-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.3-rc/bookworm/zts/docker-php-ext-enable b/8.3-rc/bookworm/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-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.3-rc/bookworm/zts/docker-php-ext-install b/8.3-rc/bookworm/zts/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-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 '{}' ';' \
- | 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.3-rc/bookworm/zts/docker-php-source b/8.3-rc/bookworm/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-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.3-rc/bullseye/apache/Dockerfile b/8.3-rc/bullseye/apache/Dockerfile
deleted file mode 100644
index 238e487e5..000000000
--- a/8.3-rc/bullseye/apache/Dockerfile
+++ /dev/null
@@ -1,288 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bullseye-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" \
- ; 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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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.3-rc/bullseye/apache/apache2-foreground b/8.3-rc/bullseye/apache/apache2-foreground
deleted file mode 100755
index 5fe22e26f..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/apache/docker-php-entrypoint b/8.3-rc/bullseye/apache/docker-php-entrypoint
deleted file mode 100755
index 3d36d5e8c..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/apache/docker-php-ext-configure b/8.3-rc/bullseye/apache/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/apache/docker-php-ext-enable b/8.3-rc/bullseye/apache/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/apache/docker-php-ext-install b/8.3-rc/bullseye/apache/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/bullseye/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 '{}' ';' \
- | 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.3-rc/bullseye/apache/docker-php-source b/8.3-rc/bullseye/apache/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/cli/Dockerfile b/8.3-rc/bullseye/cli/Dockerfile
deleted file mode 100644
index f7d5a47ed..000000000
--- a/8.3-rc/bullseye/cli/Dockerfile
+++ /dev/null
@@ -1,222 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bullseye-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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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.3-rc/bullseye/cli/docker-php-entrypoint b/8.3-rc/bullseye/cli/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/cli/docker-php-ext-configure b/8.3-rc/bullseye/cli/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/cli/docker-php-ext-enable b/8.3-rc/bullseye/cli/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/cli/docker-php-ext-install b/8.3-rc/bullseye/cli/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/bullseye/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 '{}' ';' \
- | 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.3-rc/bullseye/cli/docker-php-source b/8.3-rc/bullseye/cli/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/fpm/Dockerfile b/8.3-rc/bullseye/fpm/Dockerfile
deleted file mode 100644
index 0b8e23e7f..000000000
--- a/8.3-rc/bullseye/fpm/Dockerfile
+++ /dev/null
@@ -1,275 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bullseye-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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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 /usr/local/etc; \
- if [ -d php-fpm.d ]; then \
- # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf"
- sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \
- cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \
- else \
- # PHP 5.x doesn't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency
- mkdir php-fpm.d; \
- cp php-fpm.conf.default php-fpm.d/www.conf; \
- { \
- echo '[global]'; \
- echo 'include=etc/php-fpm.d/*.conf'; \
- } | tee php-fpm.conf; \
- fi; \
- { \
- 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'; \
- } | tee php-fpm.d/docker.conf; \
- { \
- echo '[global]'; \
- echo 'daemonize = no'; \
- echo; \
- echo '[www]'; \
- echo 'listen = 9000'; \
- } | 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.3-rc/bullseye/fpm/docker-php-entrypoint b/8.3-rc/bullseye/fpm/docker-php-entrypoint
deleted file mode 100755
index 86343d803..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/fpm/docker-php-ext-configure b/8.3-rc/bullseye/fpm/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/fpm/docker-php-ext-enable b/8.3-rc/bullseye/fpm/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/fpm/docker-php-ext-install b/8.3-rc/bullseye/fpm/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/bullseye/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 '{}' ';' \
- | 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.3-rc/bullseye/fpm/docker-php-source b/8.3-rc/bullseye/fpm/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/zts/Dockerfile b/8.3-rc/bullseye/zts/Dockerfile
deleted file mode 100644
index e61e12e63..000000000
--- a/8.3-rc/bullseye/zts/Dockerfile
+++ /dev/null
@@ -1,226 +0,0 @@
-#
-# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
-#
-# PLEASE DO NOT EDIT IT DIRECTLY.
-#
-
-FROM debian:bullseye-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 1198C0117593497A5EC5C199286AF1F9897469DC C28D937575603EB4ABB725861C0779DC5C0A9DE4 AFD8691FDAEDF03BDF6E460563F15A9B715376CA
-
-ENV PHP_VERSION 8.3.12RC1
-ENV PHP_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc"
-ENV PHP_SHA256="fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296"
-
-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; \
- \
- if [ -n "$PHP_ASC_URL" ]; then \
- 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"; \
- fi; \
- \
- 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; \
- ./configure \
- --build="$gnuArch" \
- --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 -r dpkg-query --search \
- | cut -d: -f1 \
- | 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/
-
-# 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.3-rc/bullseye/zts/docker-php-entrypoint b/8.3-rc/bullseye/zts/docker-php-entrypoint
deleted file mode 100755
index 88a016c16..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/zts/docker-php-ext-configure b/8.3-rc/bullseye/zts/docker-php-ext-configure
deleted file mode 100755
index 34fc1337d..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/zts/docker-php-ext-enable b/8.3-rc/bullseye/zts/docker-php-ext-enable
deleted file mode 100755
index 41d20bbe3..000000000
--- a/8.3-rc/bullseye/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.3-rc/bullseye/zts/docker-php-ext-install b/8.3-rc/bullseye/zts/docker-php-ext-install
deleted file mode 100755
index aa0b96c5a..000000000
--- a/8.3-rc/bullseye/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 '{}' ';' \
- | 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.3-rc/bullseye/zts/docker-php-source b/8.3-rc/bullseye/zts/docker-php-source
deleted file mode 100755
index 9033d243d..000000000
--- a/8.3-rc/bullseye/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/versions.json b/versions.json
index 2e7343e42..3210673a6 100644
--- a/versions.json
+++ b/versions.json
@@ -88,28 +88,7 @@
],
"version": "8.3.12"
},
- "8.3-rc": {
- "ascUrl": "https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz.asc",
- "sha256": "fbb3ece7f2525dee3154094da8fbbdd5c294b482b2a20c66cd4ce4aa7aaf1296",
- "url": "https://downloads.php.net/~eric/php-8.3.12RC1.tar.xz",
- "variants": [
- "bookworm/cli",
- "bookworm/apache",
- "bookworm/fpm",
- "bookworm/zts",
- "bullseye/cli",
- "bullseye/apache",
- "bullseye/fpm",
- "bullseye/zts",
- "alpine3.20/cli",
- "alpine3.20/fpm",
- "alpine3.20/zts",
- "alpine3.19/cli",
- "alpine3.19/fpm",
- "alpine3.19/zts"
- ],
- "version": "8.3.12RC1"
- },
+ "8.3-rc": null,
"8.4-rc": {
"ascUrl": "https://downloads.php.net/~calvinb/php-8.4.0beta5.tar.xz.asc",
"sha256": "86c9e6fe9b4ab2046832ab65f955c50d663a6fccb3f6d6fbddc4aa9b96a561b7",