diff --git a/php/8/build/data/install-ext b/php/8/build/data/install-ext index 88f6d9ca3..34a9a8350 100644 --- a/php/8/build/data/install-ext +++ b/php/8/build/data/install-ext @@ -1,17 +1,14 @@ -#!/bin/sh +#!/bin/bash export MC="-j$(nproc)" echo echo "============================================" -echo "Install extensions from : install-ext" echo "PHP version : ${PHP_VERSION}" -echo "Extra Extensions : ${PHP_EXTENSIONS}" -echo "Container package url : ${CONTAINER_PACKAGE_URL}" +echo "Install extensions : $1" echo "============================================" echo - isPhpVersionGreaterOrEqual() { local PHP_MAJOR_VERSION=$(php -r "echo PHP_MAJOR_VERSION;") local PHP_MINOR_VERSION=$(php -r "echo PHP_MINOR_VERSION;") @@ -23,35 +20,47 @@ isPhpVersionGreaterOrEqual() { fi } -install_php_extensions() { +is_extension_installed() { local extension=$1 + if php -m | grep -q "^$extension$"; then + echo "------ $extension is already installed ------" + return 0 + else + return 1 + fi +} + +install_php_extensions() { + local extension=$1 install-php-extensions $extension - if [ $? -eq 0 ]; then - echo "------ install-php-extensions $extension succeeded ------" - else - echo "------ install-php-extensions $extension failed ------" + + if is_extension_installed "$extension"; then + echo "------ install-php-extensions $extension succeeded ------" + return fi + + echo "------ install-php-extensions $extension failed ------" } pecl_install() { local extension=$1 printf "\n" | pecl install $extension - if [ $? -eq 0 ]; then - docker-php-ext-enable $extension - echo "------ pecl install $extension succeeded ------" - else - echo "------ pecl install $extension failed ------" + docker-php-ext-enable $extension + if is_extension_installed "$extension"; then + echo "------ pecl install $extension succeeded ------" + return fi + echo "------ pecl install $extension failed ------" } docker_php_ext_install() { local extension=$1 - docker-php-ext-install ${MC} $extension - if [ $? -eq 0 ]; then - echo "------ docker-php-ext-install install $extension succeeded ------" - else - echo "------ docker-php-ext-install install $extension failed------" - fi + docker-php-ext-install $extension + if is_extension_installed "$extension"; then + echo "------ docker-php-ext-install install $extension succeeded ------" + return + fi + echo "------ docker-php-ext-install install $extension failed------" } install_extension_default() { @@ -102,23 +111,6 @@ install_gd() { && apt-get autoremove -y } -install_event() { - apt-get install -y libevent-dev - apt-get install libssl-dev - export is_sockets_installed=$(php -r "echo extension_loaded('sockets');") - - if [ "${is_sockets_installed}" = "" ]; then - echo "---------- event is depend on sockets, install sockets first ----------" - docker-php-ext-install sockets - fi - - mkdir event - tar -xf event-3.1.3.tgz -C event --strip-components=1 - cd event && phpize && ./configure && make && make install - - docker-php-ext-enable --ini-name event.ini event -} - install_msg() { if [ $? -eq 0 ]; then @@ -129,7 +121,7 @@ install_msg() { } install_memcache() { - pecl install memcache + printf "\n" | pecl install memcache install_msg memcache docker-php-ext-enable memcache } @@ -137,11 +129,11 @@ install_memcache() { install_pdo_pgsql() { apt-get update && apt-get install -y libpq-dev install_msg pdo_pgsql - docker-php-ext-install ${MC} pdo_pgsql + docker-php-ext-install pdo_pgsql } install_pdo_mysql() { - docker-php-ext-install ${MC} pdo_mysql + docker-php-ext-install pdo_mysql install_msg pdo_mysql } @@ -153,7 +145,11 @@ install_yaf() { install_extension() { local extension=$1 - echo "------ install extension: $extension ------" + if is_extension_installed "$extension"; then + return + fi + + echo "------ install extension: $extension ------" if [ "$extension" = "gd" ]; then install_gd @@ -165,8 +161,6 @@ install_extension() { install_pdo_pgsql elif [ "$extension" = "pdo_mysql" ]; then install_pdo_mysql - elif [ "$extension" = "event" ]; then - install_event elif [ "$extension" = "yaml" ]; then apt-get install -y libyaml-dev pecl_install yaml @@ -197,10 +191,18 @@ install_extension() { docker_php_ext_install sockets elif [ "$extension" = "sysvsem" ]; then docker_php_ext_install sysvsem + elif [ "$extension" = "sysvmsg" ]; then + docker_php_ext_install sysvmsg elif [ "$extension" = "opcache" ]; then docker_php_ext_install opcache elif [ "$extension" = "mysqli" ]; then - docker_php_ext_install mysqli + docker_php_ext_install mysqli + elif [ "$extension" = "sysvshm" ]; then + docker_php_ext_install sysvshm + elif [ "$extension" = "calendar" ]; then + docker_php_ext_install calendar + elif [ "$extension" = "zmq" ]; then + docker_php_ext_install zmq elif [ "$extension" = "sodium" ]; then apt-get install -y libsodium-dev docker_php_ext_install sodium @@ -263,20 +265,39 @@ install_extension() { install_php_extensions amqp elif [ "$extension" = "zookeeper" ]; then install_php_extensions zookeeper + elif [ "$extension" = "ioncube_loader" ]; then + install_php_extensions ioncube_loader + elif [ "$extension" = "pdo_sqlsrv" ]; then + install_php_extensions pdo_sqlsrv + elif [ "$extension" = "sqlsrv" ]; then + install_php_extensions sqlsrv + elif [ "$extension" = "enchant" ]; then + install_php_extensions enchant + elif [ "$extension" = "pspell" ]; then + install_php_extensions pspell + elif [ "$extension" = "bz2" ]; then + install_php_extensions bz2 + elif [ "$extension" = "zmq" ]; then + install_php_extensions zmq + elif [ "$extension" = "smbclient" ]; then + install_php_extensions smbclient + elif [ "$extension" = "event" ]; then + install_php_extensions event else install_extension_default $extension fi } -if [ $# -eq 1 ]; then - extension=$1 - apt-get update - install_extension $extension -else - echo "${PHP_EXTENSIONS}" | tr ',' '\n' | while read -r extension; do +extension=$1 + +if [[ $extension == *,* ]]; then + echo "${extension}" | tr ',' '\n' | while read -r extension; do apt-get update install_extension $extension done +else + apt-get update + install_extension $extension fi docker-php-source delete