Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/build-v84.yml
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions libs/almalinux-9-v85/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 6 additions & 1 deletion libs/almalinux-9-v85/build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand Down
1 change: 1 addition & 0 deletions libs/almalinux-9-v85/build/conf/php.ini
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ extension=shmop
extension=sysvmsg
extension=sysvsem
extension=sysvshm
extension=mongodb

; Priority 40
extension=apcu
Expand Down
3 changes: 2 additions & 1 deletion libs/amazon-linux-2023-v84/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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/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
Expand Down
15 changes: 14 additions & 1 deletion libs/amazon-linux-2023-v84/build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,19 @@ RUN dnf install -y \
${PHP}-pecl-msgpack \
${PHP}-pecl-redis6

# 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

Expand All @@ -58,7 +71,7 @@ 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 + compiled mongodb)
RUN for so in /usr/lib64/php8.4/modules/*.so; do \
patchelf --set-rpath '$ORIGIN' "$so" || true; \
done
Expand Down
1 change: 1 addition & 0 deletions libs/amazon-linux-2023-v84/build/conf/php.ini
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ extension=shmop
extension=sysvmsg
extension=sysvsem
extension=sysvshm
extension=mongodb

; Priority 40
extension=apcu
Expand Down