diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8f46877a1f1a45186b62255217eb1dbce3ab247d..78fa2d1c411926f49ee98334f1ca6f2595e68750 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -78,8 +78,14 @@ stages:
     - dnf install -y --nodocs git
     - git config --global --add safe.directory $(pwd)
     - echo "${DOCKER_HUB_PASSWORD}" | buildah login -u "${DOCKER_HUB_USER}" --password-stdin docker.io
-    - echo 'Testing ./build_containers.sh'
-    - chmod +x ./build_containers.sh; ./build_containers.sh $CI_COMMIT_BRANCH $DOCKER_HUB
+    - |
+      if [ "$CI_PIPELINE_SOURCE" == "schedule" ]; then
+        echo 'Running nightly build script'
+        ./build_nightly.sh $CI_COMMIT_BRANCH
+      else
+        echo 'Testing ./build_containers.sh'
+        ./build_containers.sh $CI_COMMIT_BRANCH
+      fi
 
 docker:
   extends: .docker-build
@@ -104,7 +110,8 @@ docker:
 workflow:
   rules:
     # Run on commits to the default & release branches.
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_ROOT_NAMESPACE == "project"
+#    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_ROOT_NAMESPACE == "project"
+    - if: $CI_COMMIT_BRANCH == '3512443-php-8.5-nightly' && $CI_PROJECT_ROOT_NAMESPACE == "issue"
     # The last rule above blocks manual and scheduled pipelines on non-default branch. The rule below allows them:
     - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_ROOT_NAMESPACE == "project"
     # Run if triggered from Web using 'Run Pipelines'
diff --git a/build_nightly.sh b/build_nightly.sh
new file mode 100755
index 0000000000000000000000000000000000000000..347a57fb68e19ec9cf3c611018dfe09ca4f0e7a3
--- /dev/null
+++ b/build_nightly.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eux
+####
+# This script build PHP 8.5 nightly
+#
+####
+
+GITBRANCH=${1#origin/}
+
+DOCKERFILES=php/8.5-ubuntu-apache/Dockerfile
+
+if [[ ! -z "${DOCKERFILES-}" ]]; then
+    for DOCKERFILE in "${DOCKERFILES[@]}"
+    do
+      DOCKERTAG=$(echo ${DOCKERFILE} | awk 'BEGIN {FS="/";} {print $1"-"$2}')
+      docker build -t drupalci/${DOCKERTAG#db-}:${GITBRANCH} ./${DOCKERFILE%/Dockerfile}
+      BUILDRESULT=$?
+      if [ ${BUILDRESULT} -eq 0 ]; then
+          docker push drupalci/${DOCKERTAG#db-}:${GITBRANCH}
+      fi
+    done
+fi
diff --git a/php/8.5-ubuntu-apache/Dockerfile b/php/8.5-ubuntu-apache/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..866a91359a5139ca5a0ef5cb53e57b60aa539ded
--- /dev/null
+++ b/php/8.5-ubuntu-apache/Dockerfile
@@ -0,0 +1,286 @@
+######
+# Base
+######
+ARG THE_BASE_IMAGE=ubuntu:noble
+ARG PHPIZE_DEPS="autoconf file g++ gcc make pkg-config re2c"
+ARG PHP_CFLAGS="-O2 -g"
+
+FROM ${THE_BASE_IMAGE} AS builder
+ENV DRUPALCI=TRUE TERM=xterm DEBIAN_FRONTEND=noninteractive
+
+#########
+# Php build
+#######
+
+# PHP Version
+ENV PHP_VERSION 8.5.0
+ENV PHP_URL="https://github.com/php/php-src/archive/master.tar.gz"
+#ENV PHP_URL="https://php.net/distributions/php-${PHP_VERSION}.tar.xz"
+ENV PHP_SHA256_HASH="260dedcb5d1523c4070028386fd9d7c4afda1362fbfde62360e9d588f5ec6a2a  php.tar.gz"
+
+ARG PHPIZE_DEPS
+ARG PHP_CFLAGS
+ENV PHP_CFLAGS="$PHP_CFLAGS"
+ENV PHP_CPPFLAGS="$PHP_CFLAGS"
+ENV PHP_LDFLAGS=""
+
+RUN set -eux &&\
+    echo 'APT::Install-Recommends "0";' >/etc/apt/apt.conf.d/99norecommends &&\
+    apt-get update && apt-get install -qy --no-install-recommends \
+        ca-certificates curl apt-utils &&\
+    \
+    mkdir -p /usr/src &&\
+    cd /usr/src &&\
+    \
+    curl -LS -o php.tar.gz "$PHP_URL" &&\
+    \
+#    echo $PHP_SHA256_HASH | sha256sum -c &&\
+    \
+    buildDeps=" \
+        apache2-dev apache2 \
+        libcurl4-openssl-dev \
+        libedit-dev \
+        libfreetype-dev \
+        libicu-dev \
+        libjpeg-turbo8-dev \
+        libonig-dev \
+        zlib1g-dev \
+        libpng-dev \
+        libwebp-dev \
+        libavif-dev \
+        libsqlite3-dev \
+        libpq-dev \
+        libssl-dev \
+        libtidy-dev \
+        libxml2-dev \
+        libxslt1-dev \
+        libyaml-dev \
+        libzip-dev \
+        libncurses-dev \
+    " &&\
+    apt-get install -qy --no-install-recommends $PHPIZE_DEPS $buildDeps bison &&\
+    rm -rf /var/lib/apt/lists/*
+
+RUN set -xe &&\
+    buildDir="/usr/src/php" &&\
+    mkdir -p /usr/local/etc/php/conf.d &&\
+    \
+    mkdir "$buildDir" &&\
+    tar -zxf /usr/src/php.tar.gz -C "$buildDir" --strip-components=1 &&\
+    cd "$buildDir" &&\
+    ./buildconf &&\
+    CFLAGS="$PHP_CFLAGS" \
+    CPPFLAGS="$PHP_CPPFLAGS" \
+    LDFLAGS="$PHP_LDFLAGS" \
+    ./configure \
+        --with-config-file-path=/usr/local/etc/php \
+        --with-config-file-scan-dir=/usr/local/etc/php/conf.d \
+        --enable-ftp \
+        --enable-mbstring \
+        --enable-mysqlnd \
+        --with-curl \
+        --with-libedit \
+            --with-zlib \
+            --with-openssl \
+            --with-mysqli=mysqlnd \
+            --with-pdo-mysql=mysqlnd \
+            --with-pdo-sqlite \
+            --with-pdo-pgsql \
+            --with-readline \
+            --with-freetype \
+            --with-jpeg \
+            --with-xsl \
+            --with-tidy \
+            --with-gettext=shared \
+            --enable-gd \
+            --with-webp \
+            --with-avif \
+            --with-pear \
+            --enable-sockets \
+            --enable-exif \
+            --with-zip \
+            --enable-soap \
+            --enable-sysvsem \
+            --enable-sysvshm \
+            --enable-shmop \
+            --enable-pcntl \
+            --enable-bcmath \
+            --enable-xmlreader \
+            --enable-intl \
+            --enable-opcache \
+            --with-apxs2 \
+            --disable-cgi \
+            --disable-phpdbg \
+           &&\
+    make -j "$(nproc)" &&\
+    make install &&\
+    cd / && rm -fr "$buildDir"
+
+# install pecl extensions for apcu, pcov, xdebug, and yaml
+RUN pecl channel-update pecl.php.net &&\
+    pecl install APCu-5.1.24 mongodb-1.21.0 opentelemetry-1.1.2 pcov-1.0.12 xdebug-3.4.2 yaml-2.2.4 \
+    &&\
+    set -eux &&\
+# stript .debug files out of executables
+    echo '\
+        for file in "$@"; do \
+            objcopy --only-keep-debug "$file" "$file".debug; \
+            strip --strip-debug --strip-unneeded "$file"; \
+            objcopy --add-gnu-debuglink="$file".debug "$file"; \
+        done' > /strip.sh; \
+    sh /strip.sh \
+      /usr/lib/apache2/modules/libphp.so \
+      /usr/local/bin/php \
+      $(php -r 'echo ini_get("extension_dir");')/*.so
+
+COPY ./conf/php/php.ini /usr/local/etc/php/php.ini
+COPY ./conf/php/php-cli.ini /usr/local/etc/php/php-cli.ini
+COPY ./docker-php-* /usr/local/bin/
+
+
+#########
+# Php Setup
+######
+
+FROM ${THE_BASE_IMAGE}
+ARG DEBIAN_FRONTEND=noninteractive
+ENV DRUPALCI=TRUE TERM=xterm
+
+COPY --from=builder /usr/local /usr/local
+
+COPY --from=builder /usr/lib/apache2/modules/libphp.so /usr/lib/apache2/modules/libphp.so.debug /usr/lib/apache2/modules/
+COPY --from=builder /etc/apache2/mods-enabled/php.load /etc/apache2/mods-enabled/php.load
+COPY --from=builder /etc/apache2/mods-available/php.load /etc/apache2/mods-available/php.load
+
+RUN set -xe &&\
+    echo 'APT::Install-Recommends "0";' >/etc/apt/apt.conf.d/99norecommends ;\
+    apt-get update &&\
+    buildDeps=" \
+        libedit2 \
+        libfreetype6 \
+        libicu74 \
+        libjpeg-turbo8 \
+        libonig5 \
+        libpng16-16 \
+        zlib1g \
+        libwebp7 \
+        libavif16 \
+        libaom3 \
+        libsqlite3-0 \
+        libpq5 \
+        libtidy5deb1 \
+        libyaml-0-2 \
+        libxml2 \
+        libxslt1.1 \
+        libzip4 \
+        libncurses6 \
+    " &&\
+    runDeps=" \
+        apache2 \
+        bzip2 \
+        curl ca-certificates gnupg2 \
+        default-mysql-client postgresql-client sudo git sqlite3 \
+        patch \
+        rsync \
+        unzip \
+        xz-utils \
+        yq jq \
+    " &&\
+    apt-get install -qy --no-install-recommends $buildDeps $runDeps &&\
+    rm -rf /var/lib/apt/lists/*
+
+# Install Composer, Drush
+RUN curl -sSLo /tmp/composer-setup.php https://getcomposer.org/installer &&\
+    curl -sSLo /tmp/composer-setup.sig https://composer.github.io/installer.sig &&\
+    php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" &&\
+    php /tmp/composer-setup.php --filename composer --install-dir /usr/local/bin &&\
+    curl -sSLo /usr/local/bin/drush https://github.com/drush-ops/drush/releases/download/8.3.5/drush.phar &&\
+    chmod +x /usr/local/bin/drush &&\
+    /usr/local/bin/drush --version
+
+# Install nodejs and yarn
+RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/nodesource.gpg &&\
+    echo 'deb [signed-by=/etc/apt/trusted.gpg.d/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main' | tee /etc/apt/sources.list.d/nodesource.list &&\
+    curl -sSLo /etc/apt/trusted.gpg.d/yarn.gpg.asc https://dl.yarnpkg.com/debian/pubkey.gpg &&\
+    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list &&\
+    apt-get update &&\
+    apt-get install -qy --no-install-recommends nodejs yarn &&\
+    rm -rf /var/lib/apt/lists/*
+
+# Install phantomjs, supervisor
+RUN _file=phantomjs-2.1.1-linux-x86_64 &&\
+    curl -sSLo /$_file.tar.bz2 https://bitbucket.org/ariya/phantomjs/downloads/$_file.tar.bz2 &&\
+    tar -jxf /$_file.tar.bz2 -C / &&\
+    mv /$_file/bin/phantomjs /usr/bin/phantomjs &&\
+    rm -f /$_file.tar.bz2 &&\
+    rm -rf /$_file &&\
+    chmod 755 /usr/bin/phantomjs &&\
+    apt-get update &&\
+    apt-get install -qy --no-install-recommends supervisor fontconfig &&\
+    rm -rf /var/lib/apt/lists/*
+
+COPY ./conf/supervisor-phantomjs.conf /etc/supervisor/conf.d/phantomjs.conf
+
+
+######
+# Apache Setup
+######
+
+RUN set -ex \
+	\
+	&& sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' /etc/apache2/envvars \
+	&& sed -i 's/Require local/#Require local/' /etc/apache2/mods-available/status.conf \
+	\
+	&& . /etc/apache2/envvars \
+	&& echo "ServerName localhost" >> /etc/apache2/apache2.conf \
+	&& for dir in \
+		"$APACHE_LOCK_DIR" \
+		"$APACHE_RUN_DIR" \
+		"$APACHE_LOG_DIR" \
+		/var/www/html \
+		/var/www/apc \
+	; do \
+		rm -rvf "$dir" \
+		&& mkdir -p "$dir" \
+		&& chown -R "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$dir"; \
+	done
+
+COPY ./conf/apache2/vhost.conf /etc/apache2/sites-available/drupal.conf
+COPY ./apache2-foreground /usr/local/bin/
+
+# Apache + PHP requires preforking Apache for best results
+RUN a2dismod mpm_event && a2enmod mpm_prefork &&\
+	a2enmod expires headers rewrite &&\
+	\
+# PHP files should be handled by PHP, and should be preferred over any other file type
+	{ \
+		echo '<FilesMatch \.php$>'; \
+		echo '\tSetHandler application/x-httpd-php'; \
+		echo '</FilesMatch>'; \
+		echo; \
+		echo 'DirectoryIndex disabled'; \
+		echo 'DirectoryIndex index.php index.html'; \
+		echo; \
+		echo '<Directory /var/www/>'; \
+		echo '\tOptions -Indexes'; \
+		echo '\tAllowOverride All'; \
+		echo '</Directory>'; \
+	} | tee /etc/apache2/conf-available/docker-php.conf &&\
+	a2enconf docker-php &&\
+	a2dissite 000-default.conf &&\
+	a2ensite drupal
+
+ARG PHPIZE_DEPS
+ENV PHPIZE_DEPS=$PHPIZE_DEPS
+
+ARG PHP_CFLAGS
+ENV PHP_CFLAGS="$PHP_CFLAGS"
+ENV PHP_CPPFLAGS="$PHP_CFLAGS"
+ENV PHP_LDFLAGS=""
+
+ENTRYPOINT ["docker-php-entrypoint"]
+
+WORKDIR /var/www/html
+
+EXPOSE 80
+CMD ["apache2-foreground"]
diff --git a/php/8.5-ubuntu-apache/apache2-foreground b/php/8.5-ubuntu-apache/apache2-foreground
new file mode 100755
index 0000000000000000000000000000000000000000..662a39a995f75bc58d11f1acea5a559e6fa799f2
--- /dev/null
+++ b/php/8.5-ubuntu-apache/apache2-foreground
@@ -0,0 +1,17 @@
+#!/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 <apache args>", 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_PID_FILE:=${APACHE_RUN_DIR:=/var/run/apache2}/apache2.pid}"
+rm -f "$APACHE_PID_FILE"
+
+exec apache2 -DFOREGROUND "$@"
diff --git a/php/8.5-ubuntu-apache/conf/apache2/vhost.conf b/php/8.5-ubuntu-apache/conf/apache2/vhost.conf
new file mode 100644
index 0000000000000000000000000000000000000000..17314caae94212fb0544eed3cc67de6d968f9b82
--- /dev/null
+++ b/php/8.5-ubuntu-apache/conf/apache2/vhost.conf
@@ -0,0 +1,19 @@
+<VirtualHost *:80>
+
+  DocumentRoot /var/www/html
+  RewriteEngine On
+  Alias "/apc" "/var/www/apc"
+  Alias "/server-status" "/var/www/apc"
+
+  <Directory /var/www/html>
+    Options Indexes FollowSymLinks MultiViews
+    AllowOverride All
+    Order Allow,Deny
+    Allow from All
+  </Directory>
+
+  ErrorLog /var/log/apache2/test.apache.error.log
+  ServerSignature Off
+  CustomLog /var/log/apache2/test.apache.access.log combined
+
+</VirtualHost>
diff --git a/php/8.5-ubuntu-apache/conf/php/php-cli.ini b/php/8.5-ubuntu-apache/conf/php/php-cli.ini
new file mode 100644
index 0000000000000000000000000000000000000000..03d3be0c0216b294c9eb4dd1ab8d032016fc153f
--- /dev/null
+++ b/php/8.5-ubuntu-apache/conf/php/php-cli.ini
@@ -0,0 +1,202 @@
+[PHP]
+engine = On
+short_open_tag = Off
+asp_tags = Off
+precision = 14
+output_buffering = 4096
+zlib.output_compression = Off
+implicit_flush = Off
+unserialize_callback_func =
+serialize_precision = -1
+disable_functions =
+disable_classes =
+zend.enable_gc = On
+expose_php = On
+max_execution_time = 300
+max_input_time = 60
+memory_limit = -1
+error_reporting = E_ALL & ~E_DEPRECATED
+display_errors = Off
+display_startup_errors = Off
+log_errors = On
+log_errors_max_len = 1024
+ignore_repeated_errors = Off
+ignore_repeated_source = Off
+report_memleaks = On
+track_errors = Off
+html_errors = Off
+variables_order = "GPCS"
+request_order = "GP"
+register_argc_argv = Off
+auto_globals_jit = On
+post_max_size = 8M
+auto_prepend_file =
+auto_append_file =
+default_mimetype = "text/html"
+doc_root =
+user_dir =
+enable_dl = Off
+file_uploads = On
+upload_max_filesize = 8M
+max_file_uploads = 20
+allow_url_fopen = On
+allow_url_include = Off
+default_socket_timeout = 60
+assert.exception = 1
+[CLI Server]
+cli_server.color = On
+
+
+[Pdo_mysql]
+pdo_mysql.cache_size = 2000
+pdo_mysql.default_socket=
+[Phar]
+[Syslog]
+define_syslog_variables  = Off
+[mail function]
+SMTP = localhost
+smtp_port = 25
+mail.add_x_header = On
+[SQL]
+sql.safe_mode = Off
+[ODBC]
+odbc.allow_persistent = On
+odbc.check_persistent = On
+odbc.max_persistent = -1
+odbc.max_links = -1
+odbc.defaultlrl = 4096
+odbc.defaultbinmode = 1
+[Interbase]
+ibase.allow_persistent = 1
+ibase.max_persistent = -1
+ibase.max_links = -1
+ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
+ibase.dateformat = "%Y-%m-%d"
+ibase.timeformat = "%H:%M:%S"
+[MySQL]
+mysql.allow_local_infile = On
+mysql.allow_persistent = On
+mysql.cache_size = 2000
+mysql.max_persistent = -1
+mysql.max_links = -1
+mysql.default_port =
+mysql.default_socket =
+mysql.default_host =
+mysql.default_user =
+mysql.default_password =
+mysql.connect_timeout = 60
+mysql.trace_mode = Off
+[MySQLi]
+mysqli.max_persistent = -1
+mysqli.allow_persistent = On
+mysqli.max_links = -1
+mysqli.cache_size = 2000
+mysqli.default_port = 3306
+mysqli.default_socket =
+mysqli.default_host =
+mysqli.default_user =
+mysqli.default_pw =
+mysqli.reconnect = Off
+[mysqlnd]
+mysqlnd.collect_statistics = On
+mysqlnd.collect_memory_statistics = Off
+[OCI8]
+[PostgreSQL]
+pgsql.allow_persistent = On
+pgsql.auto_reset_persistent = Off
+pgsql.max_persistent = -1
+pgsql.max_links = -1
+pgsql.ignore_notice = 0
+pgsql.log_notice = 0
+[Sybase-CT]
+sybct.allow_persistent = On
+sybct.max_persistent = -1
+sybct.max_links = -1
+sybct.min_server_severity = 10
+sybct.min_client_severity = 10
+[bcmath]
+bcmath.scale = 0
+[browscap]
+[Session]
+session.save_handler = files
+session.save_path = "/tmp"
+session.use_strict_mode = 0
+session.use_cookies = 1
+session.use_only_cookies = 1
+session.name = PHPSESSID
+session.auto_start = 0
+session.cookie_lifetime = 0
+session.cookie_path = /
+session.cookie_domain =
+session.cookie_httponly =
+session.serialize_handler = php
+session.gc_probability = 1
+session.gc_divisor = 1000
+session.gc_maxlifetime = 1440
+session.referer_check =
+session.entropy_length = 0
+session.cache_limiter = nocache
+session.cache_expire = 180
+session.use_trans_sid = 0
+session.hash_function = 0
+session.hash_bits_per_character = 5
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+[MSSQL]
+mssql.allow_persistent = On
+mssql.max_persistent = -1
+mssql.max_links = -1
+mssql.min_error_severity = 10
+mssql.min_message_severity = 10
+mssql.compatibility_mode = Off
+mssql.secure_connection = Off
+
+[Tidy]
+tidy.clean_output = Off
+
+[soap]
+soap.wsdl_cache_enabled=1
+soap.wsdl_cache_dir="/tmp"
+soap.wsdl_cache_ttl=86400
+soap.wsdl_cache_limit = 5
+
+[ldap]
+ldap.max_links = -1
+
+[gettext]
+extension="gettext.so"
+
+[opcache]
+zend_extension="opcache.so"
+opcache.enable=1
+opcache.enable_cli=1
+opcache.memory_consumption=1000
+opcache.interned_strings_buffer=4
+opcache.max_accelerated_files=100000
+opcache.max_wasted_percentage=5
+opcache.revalidate_freq=0
+
+[apcu]
+extension="apcu.so"
+apc.enabled = 1
+apc.shm_size = 3000M
+apc.entries_hint = 500000
+apc.enable_cli = 1
+apc.mmap_file_mask = /tmp/apc.XXXXXX
+apc.rfc1867 = 1
+apc.include_once_override = 0
+
+[xdebug]
+html_errors=on
+xdebug.remote_autostart=on
+xdebug.remote_enable=on
+xdebug.remote_log="/tmp/xdebug.log"
+xdebug.default_enable=1
+xdebug.idekey="phpcontainer"
+xdebug.remote_host="172.17.42.1"
+xdebug.remote_port="9000"
+
+[Date]
+date.timezone = UTC
+
+[yaml]
+extension=yaml
diff --git a/php/8.5-ubuntu-apache/conf/php/php.ini b/php/8.5-ubuntu-apache/conf/php/php.ini
new file mode 100644
index 0000000000000000000000000000000000000000..cc9faf73b8116130a411d59fc9877b02852ac0ff
--- /dev/null
+++ b/php/8.5-ubuntu-apache/conf/php/php.ini
@@ -0,0 +1,202 @@
+[PHP]
+engine = On
+short_open_tag = Off
+asp_tags = Off
+precision = 14
+output_buffering = 4096
+zlib.output_compression = Off
+implicit_flush = Off
+unserialize_callback_func =
+serialize_precision = -1
+disable_functions =
+disable_classes =
+zend.enable_gc = On
+expose_php = On
+max_execution_time = 300
+max_input_time = 60
+memory_limit = 320M
+error_reporting = E_ALL & ~E_DEPRECATED
+display_errors = Off
+display_startup_errors = Off
+log_errors = On
+log_errors_max_len = 1024
+ignore_repeated_errors = Off
+ignore_repeated_source = Off
+report_memleaks = On
+track_errors = Off
+html_errors = Off
+variables_order = "GPCS"
+request_order = "GP"
+register_argc_argv = Off
+auto_globals_jit = On
+post_max_size = 8M
+auto_prepend_file =
+auto_append_file =
+default_mimetype = "text/html"
+doc_root =
+user_dir =
+enable_dl = Off
+file_uploads = On
+upload_max_filesize = 8M
+max_file_uploads = 20
+allow_url_fopen = On
+allow_url_include = Off
+default_socket_timeout = 60
+assert.exception = 1
+[CLI Server]
+cli_server.color = On
+
+
+[Pdo_mysql]
+pdo_mysql.cache_size = 2000
+pdo_mysql.default_socket=
+[Phar]
+[Syslog]
+define_syslog_variables  = Off
+[mail function]
+SMTP = localhost
+smtp_port = 25
+mail.add_x_header = On
+[SQL]
+sql.safe_mode = Off
+[ODBC]
+odbc.allow_persistent = On
+odbc.check_persistent = On
+odbc.max_persistent = -1
+odbc.max_links = -1
+odbc.defaultlrl = 4096
+odbc.defaultbinmode = 1
+[Interbase]
+ibase.allow_persistent = 1
+ibase.max_persistent = -1
+ibase.max_links = -1
+ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
+ibase.dateformat = "%Y-%m-%d"
+ibase.timeformat = "%H:%M:%S"
+[MySQL]
+mysql.allow_local_infile = On
+mysql.allow_persistent = On
+mysql.cache_size = 2000
+mysql.max_persistent = -1
+mysql.max_links = -1
+mysql.default_port =
+mysql.default_socket =
+mysql.default_host =
+mysql.default_user =
+mysql.default_password =
+mysql.connect_timeout = 60
+mysql.trace_mode = Off
+[MySQLi]
+mysqli.max_persistent = -1
+mysqli.allow_persistent = On
+mysqli.max_links = -1
+mysqli.cache_size = 2000
+mysqli.default_port = 3306
+mysqli.default_socket =
+mysqli.default_host =
+mysqli.default_user =
+mysqli.default_pw =
+mysqli.reconnect = Off
+[mysqlnd]
+mysqlnd.collect_statistics = On
+mysqlnd.collect_memory_statistics = Off
+[OCI8]
+[PostgreSQL]
+pgsql.allow_persistent = On
+pgsql.auto_reset_persistent = Off
+pgsql.max_persistent = -1
+pgsql.max_links = -1
+pgsql.ignore_notice = 0
+pgsql.log_notice = 0
+[Sybase-CT]
+sybct.allow_persistent = On
+sybct.max_persistent = -1
+sybct.max_links = -1
+sybct.min_server_severity = 10
+sybct.min_client_severity = 10
+[bcmath]
+bcmath.scale = 0
+[browscap]
+[Session]
+session.save_handler = files
+session.save_path = "/tmp"
+session.use_strict_mode = 0
+session.use_cookies = 1
+session.use_only_cookies = 1
+session.name = PHPSESSID
+session.auto_start = 0
+session.cookie_lifetime = 0
+session.cookie_path = /
+session.cookie_domain =
+session.cookie_httponly =
+session.serialize_handler = php
+session.gc_probability = 1
+session.gc_divisor = 1000
+session.gc_maxlifetime = 1440
+session.referer_check =
+session.entropy_length = 0
+session.cache_limiter = nocache
+session.cache_expire = 180
+session.use_trans_sid = 0
+session.hash_function = 0
+session.hash_bits_per_character = 5
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+[MSSQL]
+mssql.allow_persistent = On
+mssql.max_persistent = -1
+mssql.max_links = -1
+mssql.min_error_severity = 10
+mssql.min_message_severity = 10
+mssql.compatibility_mode = Off
+mssql.secure_connection = Off
+
+[Tidy]
+tidy.clean_output = Off
+
+[soap]
+soap.wsdl_cache_enabled=1
+soap.wsdl_cache_dir="/tmp"
+soap.wsdl_cache_ttl=86400
+soap.wsdl_cache_limit = 5
+
+[ldap]
+ldap.max_links = -1
+
+[gettext]
+extension="gettext.so"
+
+[opcache]
+zend_extension="opcache.so"
+opcache.enable=1
+opcache.enable_cli=1
+opcache.memory_consumption=1000
+opcache.interned_strings_buffer=4
+opcache.max_accelerated_files=100000
+opcache.max_wasted_percentage=5
+opcache.revalidate_freq=0
+
+[apcu]
+extension="apcu.so"
+apc.enabled = 1
+apc.shm_size = 3000M
+apc.entries_hint = 500000
+apc.enable_cli = 1
+apc.mmap_file_mask = /tmp/apc.XXXXXX
+apc.rfc1867 = 1
+apc.include_once_override = 0
+
+[xdebug]
+html_errors=on
+xdebug.remote_autostart=on
+xdebug.remote_enable=on
+xdebug.remote_log="/tmp/xdebug.log"
+xdebug.default_enable=1
+xdebug.idekey="phpcontainer"
+xdebug.remote_host="172.17.42.1"
+xdebug.remote_port="9000"
+
+[Date]
+date.timezone = UTC
+
+[yaml]
+extension=yaml
diff --git a/php/8.5-ubuntu-apache/conf/supervisor-phantomjs.conf b/php/8.5-ubuntu-apache/conf/supervisor-phantomjs.conf
new file mode 100644
index 0000000000000000000000000000000000000000..92c1bd774978636e06231329e04c007bd7b10601
--- /dev/null
+++ b/php/8.5-ubuntu-apache/conf/supervisor-phantomjs.conf
@@ -0,0 +1,9 @@
+[program:phantomjs]
+command=/usr/bin/phantomjs --ssl-protocol=any --debug=true --ignore-ssl-errors=true /var/www/html/vendor/jcalderonzumba/gastonjs/src/Client/main.js 8510 1024 768
+directory=/var/www/html
+autostart=false
+autorestart=true
+startretries=5
+stderr_logfile=/var/log/supervisor/phantomjs.err.log
+stdout_logfile=/var/log/supervisor/phantomjs.out.log
+user=www-data
diff --git a/php/8.5-ubuntu-apache/docker-php-entrypoint b/php/8.5-ubuntu-apache/docker-php-entrypoint
new file mode 100755
index 0000000000000000000000000000000000000000..cc1543746bf18b0b3a6b6730ceeaea8042d41cb4
--- /dev/null
+++ b/php/8.5-ubuntu-apache/docker-php-entrypoint
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+# first arg is -f or --some-option
+if [ "${1#-}" != "$1" ]; then
+	set -- apache2-foreground "$@"
+fi
+/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
+exec "$@"
diff --git a/php/8.5-ubuntu-apache/docker-php-ext-configure b/php/8.5-ubuntu-apache/docker-php-ext-configure
new file mode 100755
index 0000000000000000000000000000000000000000..93d31601c9dc4c88fac2681d5d35e094e2e5cf52
--- /dev/null
+++ b/php/8.5-ubuntu-apache/docker-php-ext-configure
@@ -0,0 +1,58 @@
+#!/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
+
+ext="$1"
+if [ -z "$ext" ] || [ ! -d "$ext" ]; then
+	echo >&2 "usage: $0 ext-name [configure flags]"
+	echo >&2 "   ie: $0 gd --with-jpeg-dir=/usr/local/something"
+	echo >&2
+	echo >&2 'Possible values for ext-name:'
+	find /usr/src/php/ext \
+			-mindepth 2 \
+			-maxdepth 2 \
+			-type f \
+			-name 'config.m4' \
+		| xargs -n1 dirname \
+		| xargs -n1 basename \
+		| sort \
+		| xargs
+	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
+
+set -x
+cd "$ext"
+phpize
+./configure "$@"
diff --git a/php/8.5-ubuntu-apache/docker-php-ext-enable b/php/8.5-ubuntu-apache/docker-php-ext-enable
new file mode 100755
index 0000000000000000000000000000000000000000..da303abc38e12ec1281ca8ad6acb043f469b3c86
--- /dev/null
+++ b/php/8.5-ubuntu-apache/docker-php-ext-enable
@@ -0,0 +1,83 @@
+#!/bin/sh
+set -e
+
+cd "$(php -r 'echo ini_get("extension_dir");')"
+
+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:'
+	echo $(find -maxdepth 1 -type f -name '*.so' -exec basename '{}' ';' | sort)
+}
+
+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.so" ] && ! [ -f "$module" ]; then
+		# allow ".so" to be optional
+		module="$module.so"
+	fi
+	if ! [ -f "$module" ]; then
+		echo >&2 "error: $(readlink -f "$module") does not exist"
+		echo >&2
+		usage >&2
+		exit 1
+	fi
+	modules="$modules $module"
+done
+
+if [ -z "$modules" ]; then
+	usage >&2
+	exit 1
+fi
+
+for module in $modules; do
+	if [ -z "$(php -dzend_extension="$module" -v 2>&1 >/dev/null)" ]; then
+		# https://wiki.php.net/internals/extensions#loading_zend_extensions
+		line="zend_extension=$(readlink -f "$module")"
+	else
+		line="extension=$module"
+	fi
+
+	ext="$(basename "$module")"
+	ext="${ext%.*}"
+	if php -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
+
+	ini="/usr/local/etc/php/conf.d/${iniName:-"docker-php-ext-$ext.ini"}"
+	if ! grep -q "$line" "$ini" 2>/dev/null; then
+		echo "$line" >> "$ini"
+	fi
+done
diff --git a/php/8.5-ubuntu-apache/docker-php-ext-install b/php/8.5-ubuntu-apache/docker-php-ext-install
new file mode 100755
index 0000000000000000000000000000000000000000..c06602302fb40ef5171b14204d29daaaa8f97db5
--- /dev/null
+++ b/php/8.5-ubuntu-apache/docker-php-ext-install
@@ -0,0 +1,119 @@
+#!/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] 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
+}
+
+opts="$(getopt -o 'h?j:' --long 'help,jobs:' -- "$@" || { usage >&2 && false; })"
+eval set -- "$opts"
+
+j=1
+while true; do
+	flag="$1"
+	shift
+	case "$flag" in
+		--help|-h|'-?') usage && exit 0 ;;
+		--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"
+	make -j"$j" install
+	find modules \
+		-maxdepth 1 \
+		-name '*.so' \
+		-exec basename '{}' ';' \
+			| xargs -r docker-php-ext-enable
+	make -j"$j" clean
+	cd "$popDir"
+done
+
+if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then
+	apk del $apkDel
+fi
+
+if [ -e /usr/src/php/.docker-delete-me ]; then
+	docker-php-source delete
+fi
diff --git a/php/8.5-ubuntu-apache/docker-php-ext-pecl-install b/php/8.5-ubuntu-apache/docker-php-ext-pecl-install
new file mode 100755
index 0000000000000000000000000000000000000000..bef41910b51f3c508660746ea715b2ad0913d16c
--- /dev/null
+++ b/php/8.5-ubuntu-apache/docker-php-ext-pecl-install
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -e
+
+usage() {
+  echo "usage: $0 [channel/]<package> ..."
+  echo "   ie: $0 uploadprogress oauth-1.2.3"
+}
+
+if [ $# -eq 0 ]; then
+  usage >&2
+  exit 1
+fi
+
+pecl install "$@"
+
+while [ $# -gt 0 ]; do
+  ext="$1"
+  ext=$(echo "$ext" | cut -d- -f1)
+  ext=$(echo "$ext" | cut -d\/ -f2)
+  shift
+
+  for module in $(find /usr/local/lib/php/extensions -name "$ext.so"); do
+    ini="/usr/local/etc/php/conf.d/docker-php-pecl-$ext.ini"
+    if grep -q zend_extension_entry "$module"; then
+      # https://wiki.php.net/internals/extensions#loading_zend_extensions
+      line="zend_extension=$(readlink -f "$module")"
+    else
+      line="extension=$(basename "$module")"
+    fi
+    if ! grep -q "$line" "$ini" 2>/dev/null; then
+      echo "$line" >> "$ini"
+    fi
+  done
+done
+
+rm -rf /tmp/*
diff --git a/php/8.5-ubuntu-apache/docker-php-source b/php/8.5-ubuntu-apache/docker-php-source
new file mode 100755
index 0000000000000000000000000000000000000000..da7c90bc671883da1a764bf08ea87ec1c806b08c
--- /dev/null
+++ b/php/8.5-ubuntu-apache/docker-php-source
@@ -0,0 +1,35 @@
+#!/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 /usr/src/php.tar.xz
+		;;
+
+	*)
+		usage
+		exit 1
+		;;
+esac