diff --git a/php-82/Dockerfile b/php-82/Dockerfile index 8b6229b0..5cc4759a 100644 --- a/php-82/Dockerfile +++ b/php-82/Dockerfile @@ -150,19 +150,18 @@ RUN CFLAGS="-fstack-protector-strong -fpic -fpie -Os -I${INSTALL_DIR}/include -I --enable-exif \ --enable-ftp \ --with-gettext \ - --enable-mbstring \ + --enable-mbstring=shared \ --with-pdo-mysql=mysqlnd \ --with-mysqli \ --enable-pcntl \ --with-zip \ --enable-bcmath \ - --with-pdo-pgsql=shared \ + --with-pdo-pgsql \ # Separate .so extension so that it is not loaded by default --enable-intl=shared \ # Separate .so extension so that it is not loaded by default --enable-soap=shared \ - # Separate .so extension so that it is not loaded by default - --with-xsl=${INSTALL_DIR} \ + --with-xsl \ --with-ffi \ # necessary for `pecl` to work (to install PHP extensions) --with-pear \ @@ -203,13 +202,8 @@ RUN cp $(php -r 'echo ini_get("extension_dir");')/* /bref-layer/bref/extensions/ # - /opt/bin | /opt/lib | /opt/lib64 (libraries compiled from source) # into `/bref-layer` (the temp directory for the future Lambda layer) COPY --link utils/lib-copy /bref/lib-copy -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php-fpm /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/apcu.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/intl.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/opcache.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_mysql.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_pgsql.so /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions /bref-layer/lib # Create a symbolic link to the OpenSSL certificates file for BC purposes RUN ln -s /etc/ssl/cert.pem /bref-layer/bref/ssl/cert.pem diff --git a/php-83/Dockerfile b/php-83/Dockerfile index 8470b127..cabc04e1 100644 --- a/php-83/Dockerfile +++ b/php-83/Dockerfile @@ -150,19 +150,18 @@ RUN CFLAGS="-fstack-protector-strong -fpic -fpie -Os -I${INSTALL_DIR}/include -I --enable-exif \ --enable-ftp \ --with-gettext \ - --enable-mbstring \ + --enable-mbstring=shared \ --with-pdo-mysql=mysqlnd \ --with-mysqli \ --enable-pcntl \ --with-zip \ --enable-bcmath \ - --with-pdo-pgsql=shared \ + --with-pdo-pgsql \ # Separate .so extension so that it is not loaded by default --enable-intl=shared \ # Separate .so extension so that it is not loaded by default --enable-soap=shared \ - # Separate .so extension so that it is not loaded by default - --with-xsl=${INSTALL_DIR} \ + --with-xsl \ --with-ffi \ # necessary for `pecl` to work (to install PHP extensions) --with-pear \ @@ -203,13 +202,8 @@ RUN cp $(php -r 'echo ini_get("extension_dir");')/* /bref-layer/bref/extensions/ # - /opt/bin | /opt/lib | /opt/lib64 (libraries compiled from source) # into `/bref-layer` (the temp directory for the future Lambda layer) COPY --link utils/lib-copy /bref/lib-copy -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php-fpm /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/apcu.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/intl.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/opcache.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_mysql.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_pgsql.so /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions /bref-layer/lib # Create a symbolic link to the OpenSSL certificates file for BC purposes RUN ln -s /etc/ssl/cert.pem /bref-layer/bref/ssl/cert.pem diff --git a/php-84/Dockerfile b/php-84/Dockerfile index 37fcb41e..acfe8bd0 100644 --- a/php-84/Dockerfile +++ b/php-84/Dockerfile @@ -149,19 +149,18 @@ RUN CFLAGS="-fstack-protector-strong -fpic -fpie -Os -I${INSTALL_DIR}/include -I --enable-exif \ --enable-ftp \ --with-gettext \ - --enable-mbstring \ + --enable-mbstring=shared \ --with-pdo-mysql=mysqlnd \ --with-mysqli \ --enable-pcntl \ --with-zip \ --enable-bcmath \ - --with-pdo-pgsql=shared \ + --with-pdo-pgsql \ # Separate .so extension so that it is not loaded by default --enable-intl=shared \ # Separate .so extension so that it is not loaded by default --enable-soap=shared \ - # Separate .so extension so that it is not loaded by default - --with-xsl=${INSTALL_DIR} \ + --with-xsl \ --with-ffi \ # necessary for `pecl` to work (to install PHP extensions) --with-pear \ @@ -202,13 +201,8 @@ RUN cp $(php -r 'echo ini_get("extension_dir");')/* /bref-layer/bref/extensions/ # - /opt/bin | /opt/lib | /opt/lib64 (libraries compiled from source) # into `/bref-layer` (the temp directory for the future Lambda layer) COPY --link utils/lib-copy /bref/lib-copy -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php-fpm /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/apcu.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/intl.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/opcache.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_mysql.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_pgsql.so /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions /bref-layer/lib # Create a symbolic link to the OpenSSL certificates file for BC purposes RUN ln -s /etc/ssl/cert.pem /bref-layer/bref/ssl/cert.pem diff --git a/php-85/Dockerfile b/php-85/Dockerfile index 1352910e..53b19b77 100644 --- a/php-85/Dockerfile +++ b/php-85/Dockerfile @@ -149,19 +149,18 @@ RUN CFLAGS="-fstack-protector-strong -fpic -fpie -Os -I${INSTALL_DIR}/include -I --enable-exif \ --enable-ftp \ --with-gettext \ - --enable-mbstring \ + --enable-mbstring=shared \ --with-pdo-mysql=mysqlnd \ --with-mysqli \ --enable-pcntl \ --with-zip \ --enable-bcmath \ - --with-pdo-pgsql=shared \ + --with-pdo-pgsql \ # Separate .so extension so that it is not loaded by default --enable-intl=shared \ # Separate .so extension so that it is not loaded by default --enable-soap=shared \ - # Separate .so extension so that it is not loaded by default - --with-xsl=${INSTALL_DIR} \ + --with-xsl \ --with-ffi \ # necessary for `pecl` to work (to install PHP extensions) --with-pear \ @@ -202,13 +201,8 @@ RUN cp $(php -r 'echo ini_get("extension_dir");')/* /bref-layer/bref/extensions/ # - /opt/bin | /opt/lib | /opt/lib64 (libraries compiled from source) # into `/bref-layer` (the temp directory for the future Lambda layer) COPY --link utils/lib-copy /bref/lib-copy -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin/php-fpm /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/apcu.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/intl.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/opcache.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_mysql.so /bref-layer/lib -RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions/pdo_pgsql.so /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bin /bref-layer/lib +RUN php /bref/lib-copy/copy-dependencies.php /bref-layer/bref/extensions /bref-layer/lib # Create a symbolic link to the OpenSSL certificates file for BC purposes RUN ln -s /etc/ssl/cert.pem /bref-layer/bref/ssl/cert.pem diff --git a/src/php-85.ini b/src/php-85.ini index 62402af1..5f0b2dee 100644 --- a/src/php-85.ini +++ b/src/php-85.ini @@ -51,3 +51,5 @@ post_max_size=6M upload_max_filesize=6M extension_dir=/opt/bref/extensions +; Extensions enabled by default +extension=mbstring diff --git a/src/php.ini b/src/php.ini index ae985507..3473e5f5 100644 --- a/src/php.ini +++ b/src/php.ini @@ -52,4 +52,5 @@ upload_max_filesize=6M extension_dir=/opt/bref/extensions ; Extensions enabled by default +extension=mbstring zend_extension=opcache.so diff --git a/tests/test_2_extensions.php b/tests/test_2_extensions.php index 25caf5a7..9fb8c5ed 100644 --- a/tests/test_2_extensions.php +++ b/tests/test_2_extensions.php @@ -113,6 +113,7 @@ 'opcache' => ini_get('opcache.enable') == 1, 'pdo' => class_exists(\PDO::class), 'pdo_mysql' => extension_loaded('pdo_mysql'), + 'pdo_pgsql' => extension_loaded('pdo_pgsql'), 'pdo_sqlite' => extension_loaded('pdo_sqlite'), 'phar' => extension_loaded('phar'), 'posix' => function_exists('posix_getpgid'), @@ -144,7 +145,7 @@ $extensionsDisabledByDefault = [ 'intl' => class_exists(\Collator::class), 'apcu' => function_exists('apcu_add'), - 'pdo_pgsql' => extension_loaded('pdo_pgsql'), + 'soap' => class_exists(\SoapClient::class), ]; foreach ($extensionsDisabledByDefault as $extension => $test) { if ($test) { diff --git a/tests/test_3_manual_enabling_extensions.php b/tests/test_3_manual_enabling_extensions.php index 780f049c..28927fc8 100644 --- a/tests/test_3_manual_enabling_extensions.php +++ b/tests/test_3_manual_enabling_extensions.php @@ -5,7 +5,6 @@ $extensions = [ 'intl' => class_exists(\Collator::class), 'apcu' => function_exists('apcu_add'), - 'pdo_pgsql' => extension_loaded('pdo_pgsql'), 'soap' => class_exists(\SoapClient::class), ]; diff --git a/tests/test_3_manual_extensions.ini b/tests/test_3_manual_extensions.ini index 2c935b26..beb8a787 100644 --- a/tests/test_3_manual_extensions.ini +++ b/tests/test_3_manual_extensions.ini @@ -1,4 +1,3 @@ extension=intl extension=apcu -extension=pdo_pgsql extension=soap diff --git a/utils/lib-copy/copy-dependencies.php b/utils/lib-copy/copy-dependencies.php index 8bfb92c6..9fea8ef9 100644 --- a/utils/lib-copy/copy-dependencies.php +++ b/utils/lib-copy/copy-dependencies.php @@ -6,6 +6,8 @@ * * Usage: * php copy-dependencies.php + * It also works with directories: + * php copy-dependencies.php * * For example: * php copy-dependencies.php /opt/bin/php /opt/lib @@ -45,7 +47,18 @@ ; }); -$requiredLibraries = listDependencies($pathToCheck); +if (is_file($pathToCheck)) { + $requiredLibraries = listDependencies($pathToCheck); +} elseif (is_dir($pathToCheck)) { + $requiredLibraries = []; + foreach (glob($pathToCheck . '/*') as $file) { + if (is_file($file)) { + $requiredLibraries = array_merge($requiredLibraries, listDependencies($file)); + } + } +} else { + throw new RuntimeException("The path to check is neither a file nor a directory: $pathToCheck"); +} // Exclude existing system libraries $requiredLibraries = array_filter($requiredLibraries, function (string $lib) use ($librariesThatExistOnLambda) { // Libraries that we compiled are in /opt/lib or /opt/lib64, we compiled them because they are more