From 4d6041e9a6c365b00ee19a0c1386a01371af48dc Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Jan 2026 13:45:06 +0000 Subject: [PATCH 1/5] [v84] add mongodb extension Install MongoDB PHP extension from PECL for PHP 8.4 on Amazon Linux 2023, since native AL2023 packages don't include mongodb-pecl. --- libs/amazon-linux-2023-v84/Makefile | 1 + libs/amazon-linux-2023-v84/build/Dockerfile | 10 +++++++++- libs/amazon-linux-2023-v84/build/conf/php.ini | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libs/amazon-linux-2023-v84/Makefile b/libs/amazon-linux-2023-v84/Makefile index df9d616..1e60763 100644 --- a/libs/amazon-linux-2023-v84/Makefile +++ b/libs/amazon-linux-2023-v84/Makefile @@ -83,6 +83,7 @@ dist: build docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/phar.so > ${DIST_PHP_MODULES_PATH}/phar.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/posix.so > ${DIST_PHP_MODULES_PATH}/posix.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/redis.so > ${DIST_PHP_MODULES_PATH}/redis.so + docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php/modules/mongodb.so > ${DIST_PHP_MODULES_PATH}/mongodb.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/shmop.so > ${DIST_PHP_MODULES_PATH}/shmop.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/simplexml.so > ${DIST_PHP_MODULES_PATH}/simplexml.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/soap.so > ${DIST_PHP_MODULES_PATH}/soap.so diff --git a/libs/amazon-linux-2023-v84/build/Dockerfile b/libs/amazon-linux-2023-v84/build/Dockerfile index ac6affa..4e4cdba 100644 --- a/libs/amazon-linux-2023-v84/build/Dockerfile +++ b/libs/amazon-linux-2023-v84/build/Dockerfile @@ -46,6 +46,11 @@ RUN dnf install -y \ ${PHP}-pecl-msgpack \ ${PHP}-pecl-redis6 +# Install MongoDB extension from PECL (not available as native AL2023 package) +RUN dnf install -y ${PHP}-devel ${PHP}-pear openssl-devel +RUN pecl install mongodb +RUN echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini + # Install PostgreSQL client library RUN dnf install -y postgresql15 @@ -58,11 +63,14 @@ RUN patchelf --set-rpath '$ORIGIN' /usr/bin/php || true RUN patchelf --set-rpath '$ORIGIN' /usr/bin/php-cgi || true RUN patchelf --set-rpath '$ORIGIN' /usr/sbin/php-fpm || true -# Patch extension modules +# Patch extension modules (native packages) RUN for so in /usr/lib64/php8.4/modules/*.so; do \ patchelf --set-rpath '$ORIGIN' "$so" || true; \ done +# Patch PECL-compiled mongodb extension +RUN patchelf --set-rpath '$ORIGIN' /usr/lib64/php/modules/mongodb.so || true + WORKDIR /var/task ADD ./conf /var/task/php diff --git a/libs/amazon-linux-2023-v84/build/conf/php.ini b/libs/amazon-linux-2023-v84/build/conf/php.ini index 8241626..99aea87 100644 --- a/libs/amazon-linux-2023-v84/build/conf/php.ini +++ b/libs/amazon-linux-2023-v84/build/conf/php.ini @@ -55,6 +55,7 @@ extension=shmop extension=sysvmsg extension=sysvsem extension=sysvshm +extension=mongodb ; Priority 40 extension=apcu From 193a3dbedd8ce696ba782ceaaf2e46c29a89c4a1 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Jan 2026 14:06:14 +0000 Subject: [PATCH 2/5] [v85] add mongodb extension Install MongoDB PHP extension from PECL for PHP 8.5 on AlmaLinux 9, since Remi repository may not have mongodb-pecl package for PHP 8.5 yet. --- libs/almalinux-9-v85/Makefile | 1 + libs/almalinux-9-v85/build/Dockerfile | 7 ++++++- libs/almalinux-9-v85/build/conf/php.ini | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libs/almalinux-9-v85/Makefile b/libs/almalinux-9-v85/Makefile index 7e48a6a..47a0fe1 100644 --- a/libs/almalinux-9-v85/Makefile +++ b/libs/almalinux-9-v85/Makefile @@ -82,6 +82,7 @@ dist: build docker exec ${DOCKER_CONTAINER} /bin/cat /opt/remi/php${DIST_PHP}/root/usr/lib64/php/modules/phar.so > ${DIST_PHP_MODULES_PATH}/phar.so docker exec ${DOCKER_CONTAINER} /bin/cat /opt/remi/php${DIST_PHP}/root/usr/lib64/php/modules/posix.so > ${DIST_PHP_MODULES_PATH}/posix.so || true docker exec ${DOCKER_CONTAINER} /bin/cat /opt/remi/php${DIST_PHP}/root/usr/lib64/php/modules/redis.so > ${DIST_PHP_MODULES_PATH}/redis.so || true + docker exec ${DOCKER_CONTAINER} /bin/cat /opt/remi/php${DIST_PHP}/root/usr/lib64/php/modules/mongodb.so > ${DIST_PHP_MODULES_PATH}/mongodb.so || true docker exec ${DOCKER_CONTAINER} /bin/cat /opt/remi/php${DIST_PHP}/root/usr/lib64/php/modules/shmop.so > ${DIST_PHP_MODULES_PATH}/shmop.so || true docker exec ${DOCKER_CONTAINER} /bin/cat /opt/remi/php${DIST_PHP}/root/usr/lib64/php/modules/simplexml.so > ${DIST_PHP_MODULES_PATH}/simplexml.so docker exec ${DOCKER_CONTAINER} /bin/cat /opt/remi/php${DIST_PHP}/root/usr/lib64/php/modules/soap.so > ${DIST_PHP_MODULES_PATH}/soap.so diff --git a/libs/almalinux-9-v85/build/Dockerfile b/libs/almalinux-9-v85/build/Dockerfile index 5bd2918..a364ebc 100644 --- a/libs/almalinux-9-v85/build/Dockerfile +++ b/libs/almalinux-9-v85/build/Dockerfile @@ -49,6 +49,11 @@ RUN dnf install -y \ ${PHP}-php-pecl-redis6 \ || true +# Install MongoDB extension from PECL (may not be available as Remi package for PHP 8.5 yet) +RUN dnf install -y ${PHP}-php-devel ${PHP}-php-pear openssl-devel +RUN source /opt/remi/${PHP}/enable && pecl install mongodb +RUN echo "extension=mongodb.so" > /etc/opt/remi/${PHP}/php.d/50-mongodb.ini + # Install PostgreSQL client library RUN dnf install -y postgresql @@ -64,7 +69,7 @@ RUN patchelf --set-rpath '$ORIGIN' /opt/remi/${PHP}/root/usr/bin/php || true RUN patchelf --set-rpath '$ORIGIN' /opt/remi/${PHP}/root/usr/bin/php-cgi || true RUN patchelf --set-rpath '$ORIGIN' /opt/remi/${PHP}/root/usr/sbin/php-fpm || true -# Patch extension modules +# Patch extension modules (includes PECL-compiled mongodb) RUN for so in /opt/remi/${PHP}/root/usr/lib64/php/modules/*.so; do \ patchelf --set-rpath '$ORIGIN' "$so" || true; \ done diff --git a/libs/almalinux-9-v85/build/conf/php.ini b/libs/almalinux-9-v85/build/conf/php.ini index 9c39753..124cf90 100644 --- a/libs/almalinux-9-v85/build/conf/php.ini +++ b/libs/almalinux-9-v85/build/conf/php.ini @@ -55,6 +55,7 @@ extension=shmop extension=sysvmsg extension=sysvsem extension=sysvshm +extension=mongodb ; Priority 40 extension=apcu From 235373f1a7f0b5e5fe6999e8267f3099a945c0db Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Jan 2026 14:09:21 +0000 Subject: [PATCH 3/5] Add GitHub workflow to build and validate PHP 8.4 with MongoDB - Builds Docker image for amazon-linux-2023-v84 - Validates PHP version - Validates MongoDB extension is loaded and functional - Triggers on changes to v84 files or workflow dispatch --- .github/workflows/build-v84.yml | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/build-v84.yml diff --git a/.github/workflows/build-v84.yml b/.github/workflows/build-v84.yml new file mode 100644 index 0000000..9a825f7 --- /dev/null +++ b/.github/workflows/build-v84.yml @@ -0,0 +1,52 @@ +name: Build PHP 8.4 + +on: + push: + paths: + - 'libs/amazon-linux-2023-v84/**' + - '.github/workflows/build-v84.yml' + pull_request: + paths: + - 'libs/amazon-linux-2023-v84/**' + - '.github/workflows/build-v84.yml' + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker image + working-directory: libs/amazon-linux-2023-v84 + run: make build + + - name: Start container + run: | + docker run -d --name php84-test libphp/amazon-linux-2023-v84 sleep 300 + + - name: Validate PHP version + run: | + docker exec php84-test /usr/bin/php -v + + - name: Validate MongoDB extension is loaded + run: | + docker exec php84-test /usr/bin/php -m | grep -q mongodb + echo "MongoDB extension is available" + + - name: Validate MongoDB extension details + run: | + docker exec php84-test /usr/bin/php -i | grep -A5 "mongodb" + + - name: Test MongoDB extension functionality + run: | + docker exec php84-test /usr/bin/php -r "echo 'MongoDB version: ' . phpversion('mongodb') . PHP_EOL;" + + - name: Cleanup + if: always() + run: | + docker rm -f php84-test || true From e58d577d5cf99ae20c2313a7a546d183d38a71d1 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Jan 2026 14:13:26 +0000 Subject: [PATCH 4/5] [v84] fix PEAR package name for AL2023 Use php-pear (generic package) instead of php8.4-pear which doesn't exist in Amazon Linux 2023. --- libs/amazon-linux-2023-v84/build/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/amazon-linux-2023-v84/build/Dockerfile b/libs/amazon-linux-2023-v84/build/Dockerfile index 4e4cdba..e89a863 100644 --- a/libs/amazon-linux-2023-v84/build/Dockerfile +++ b/libs/amazon-linux-2023-v84/build/Dockerfile @@ -47,7 +47,8 @@ RUN dnf install -y \ ${PHP}-pecl-redis6 # Install MongoDB extension from PECL (not available as native AL2023 package) -RUN dnf install -y ${PHP}-devel ${PHP}-pear openssl-devel +# Note: php-pear is the generic PEAR package, not php8.4-pear +RUN dnf install -y ${PHP}-devel php-pear openssl-devel RUN pecl install mongodb RUN echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini From 4056516ff4567211eb6d8b00b5dbdc7612fbf687 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 28 Jan 2026 09:40:20 +0000 Subject: [PATCH 5/5] [v84] fix MongoDB build - compile from source - Add --load flag to docker buildx so image is available locally - Compile MongoDB extension from source since PEAR is not available in AL2023 - Download from pecl.php.net and build with phpize/configure/make - Fix mongodb.so path to /usr/lib64/php8.4/modules/ --- libs/amazon-linux-2023-v84/Makefile | 4 ++-- libs/amazon-linux-2023-v84/build/Dockerfile | 22 ++++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/libs/amazon-linux-2023-v84/Makefile b/libs/amazon-linux-2023-v84/Makefile index 1e60763..f5c322c 100644 --- a/libs/amazon-linux-2023-v84/Makefile +++ b/libs/amazon-linux-2023-v84/Makefile @@ -15,7 +15,7 @@ DOCKER_PLATFORM=linux/amd64 # ###################### build: - docker buildx build --platform ${DOCKER_PLATFORM} -t ${DOCKER_IMAGE} -f ./build/Dockerfile ./build + docker buildx build --load --platform ${DOCKER_PLATFORM} -t ${DOCKER_IMAGE} -f ./build/Dockerfile ./build # ################################################# # Separate PHP bins + shared libs from Docker image @@ -83,7 +83,7 @@ dist: build docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/phar.so > ${DIST_PHP_MODULES_PATH}/phar.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/posix.so > ${DIST_PHP_MODULES_PATH}/posix.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/redis.so > ${DIST_PHP_MODULES_PATH}/redis.so - docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php/modules/mongodb.so > ${DIST_PHP_MODULES_PATH}/mongodb.so + docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/mongodb.so > ${DIST_PHP_MODULES_PATH}/mongodb.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/shmop.so > ${DIST_PHP_MODULES_PATH}/shmop.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/simplexml.so > ${DIST_PHP_MODULES_PATH}/simplexml.so docker exec ${DOCKER_CONTAINER} /bin/cat /usr/lib64/php8.4/modules/soap.so > ${DIST_PHP_MODULES_PATH}/soap.so diff --git a/libs/amazon-linux-2023-v84/build/Dockerfile b/libs/amazon-linux-2023-v84/build/Dockerfile index e89a863..dd09dab 100644 --- a/libs/amazon-linux-2023-v84/build/Dockerfile +++ b/libs/amazon-linux-2023-v84/build/Dockerfile @@ -46,11 +46,18 @@ RUN dnf install -y \ ${PHP}-pecl-msgpack \ ${PHP}-pecl-redis6 -# Install MongoDB extension from PECL (not available as native AL2023 package) -# Note: php-pear is the generic PEAR package, not php8.4-pear -RUN dnf install -y ${PHP}-devel php-pear openssl-devel -RUN pecl install mongodb -RUN echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini +# Install MongoDB extension - compile from source (PEAR not available in AL2023) +RUN dnf install -y ${PHP}-devel openssl-devel cyrus-sasl-devel +RUN curl -sL https://pecl.php.net/get/mongodb -o /tmp/mongodb.tgz && \ + mkdir -p /tmp/mongodb && \ + tar -xzf /tmp/mongodb.tgz -C /tmp/mongodb --strip-components=1 && \ + cd /tmp/mongodb && \ + phpize && \ + ./configure --with-php-config=/usr/bin/php-config && \ + make -j$(nproc) && \ + make install && \ + echo "extension=mongodb.so" > /etc/php.d/50-mongodb.ini && \ + rm -rf /tmp/mongodb /tmp/mongodb.tgz # Install PostgreSQL client library RUN dnf install -y postgresql15 @@ -64,14 +71,11 @@ RUN patchelf --set-rpath '$ORIGIN' /usr/bin/php || true RUN patchelf --set-rpath '$ORIGIN' /usr/bin/php-cgi || true RUN patchelf --set-rpath '$ORIGIN' /usr/sbin/php-fpm || true -# Patch extension modules (native packages) +# Patch extension modules (native packages + compiled mongodb) RUN for so in /usr/lib64/php8.4/modules/*.so; do \ patchelf --set-rpath '$ORIGIN' "$so" || true; \ done -# Patch PECL-compiled mongodb extension -RUN patchelf --set-rpath '$ORIGIN' /usr/lib64/php/modules/mongodb.so || true - WORKDIR /var/task ADD ./conf /var/task/php