# Note that this image is based on the official PHP image, once 8.3 is released, this stage can likely be removed
RUN rm -Rf /usr/local/include/php/ /usr/local/lib/libphp.* /usr/local/lib/php/ /usr/local/php/
ENV PHPIZE_DEPS \
autoconf \
dpkg-dev dpkg \
file \
g++ \
gcc \
libc-dev \
make \
pkgconf \
re2c
RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS\
argon2-dev \
coreutils \
curl-dev \
readline-dev \
libsodium-dev \
sqlite-dev \
openssl-dev \
libxml2-dev \
gnu-libiconv-dev \
linux-headers \
oniguruma-dev \
bison \
git
RUN git clone --depth=1 --single-branch --branch=PHP-8.2 https://github.com/php/php-src.git
WORKDIR /php-src/
# --enable-embed is only necessary to generate libphp.so, we don't use this SAPI directly
RUN ./buildconf
RUN ./configure \
--enable-embed \
--enable-zts \
--disable-zend-signals \
# --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 \
# make sure invalid --configure-flags are fatal errors instead of just warnings
# --enable-ftp is included here because ftp_ssl_connect() needs ftp to be compiled statically (see https://github.com/docker-library/php/issues/236)
--enable-ftp \
# --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 \
# 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 \
--with-config-file-path="$PHP_INI_DIR"\
--with-config-file-scan-dir="$PHP_INI_DIR/conf.d"
RUN make -j$(nproc)
RUN make install
RUN rm -Rf /php-src/
RUNecho"Creating src archive for building extensions\n"