296 lines
9.1 KiB
Bash
296 lines
9.1 KiB
Bash
#!/bin/bash
|
|
|
|
export MC="-j$(nproc)"
|
|
ERROR_CODE=0
|
|
|
|
echo
|
|
echo "============================================"
|
|
echo "PHP version : ${PHP_VERSION}"
|
|
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;")
|
|
|
|
if [ "$PHP_MAJOR_VERSION" -gt "$1" ] || [ "$PHP_MAJOR_VERSION" -eq "$1" ] && [ "$PHP_MINOR_VERSION" -ge "$2" ]; then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
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 is_extension_installed "$extension"; then
|
|
echo "------ install-php-extensions $extension succeeded ------"
|
|
return
|
|
fi
|
|
|
|
echo "------ install-php-extensions $extension failed ------"
|
|
ERROR_CODE=1
|
|
return 1
|
|
}
|
|
|
|
pecl_install() {
|
|
local extension=$1
|
|
printf "\n" | pecl install $extension
|
|
docker-php-ext-enable $extension
|
|
if is_extension_installed "$extension"; then
|
|
echo "------ pecl install $extension succeeded ------"
|
|
return 0
|
|
fi
|
|
echo "------ pecl install $extension failed ------"
|
|
ERROR_CODE=1
|
|
return 1
|
|
}
|
|
|
|
docker_php_ext_install() {
|
|
local extension=$1
|
|
local check_name=$2
|
|
if [ -z "$check_name" ]; then
|
|
check_name=$extension
|
|
fi
|
|
docker-php-ext-install $extension
|
|
if is_extension_installed "$check_name"; then
|
|
echo "------ docker-php-ext-install install $extension succeeded ------"
|
|
return 0
|
|
fi
|
|
echo "------ docker-php-ext-install install $extension failed------"
|
|
ERROR_CODE=1
|
|
return 1
|
|
}
|
|
|
|
install_extension_default() {
|
|
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 use docker-php-ext-install------"
|
|
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 use install-php-extensions------"
|
|
install-php-extensions $extension
|
|
if [ $? -eq 0 ]; then
|
|
echo "------ install-php-extensions $extension succeeded ------"
|
|
else
|
|
echo "------ install-php-extensions $extension failed ------"
|
|
ERROR_CODE=1
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
install_msg() {
|
|
if [ $? -eq 0 ]; then
|
|
echo "------ install $1 succeeded ------"
|
|
else
|
|
echo "------ install $1 failed ------"
|
|
ERROR_CODE=1
|
|
fi
|
|
}
|
|
|
|
install_memcache() {
|
|
printf "\n" | pecl install memcache
|
|
install_msg memcache
|
|
docker-php-ext-enable memcache
|
|
}
|
|
|
|
install_pdo_pgsql() {
|
|
apt-get update && apt-get install -y libpq-dev
|
|
install_msg pdo_pgsql
|
|
docker-php-ext-install pdo_pgsql
|
|
}
|
|
|
|
install_pdo_mysql() {
|
|
docker-php-ext-install pdo_mysql
|
|
install_msg pdo_mysql
|
|
}
|
|
|
|
install_yaf() {
|
|
pecl install yaf
|
|
install_msg yaf
|
|
docker-php-ext-enable yaf
|
|
}
|
|
|
|
install_extension() {
|
|
local extension=$1
|
|
if [ -z "$extension" ]; then
|
|
return
|
|
fi
|
|
if is_extension_installed "$extension"; then
|
|
return
|
|
fi
|
|
|
|
echo "------ install extension: $extension ------"
|
|
|
|
if [ "$extension" = "gd" ]; then
|
|
install_php_extensions gd
|
|
elif [ "$extension" = "memcache" ]; then
|
|
install_memcache
|
|
elif [ "$extension" = "yaf" ]; then
|
|
install_yaf
|
|
elif [ "$extension" = "pdo_pgsql" ]; then
|
|
install_pdo_pgsql
|
|
elif [ "$extension" = "pdo_mysql" ]; then
|
|
install_pdo_mysql
|
|
elif [ "$extension" = "yaml" ]; then
|
|
apt-get install -y libyaml-dev
|
|
pecl_install yaml
|
|
elif [ "$extension" = "mongodb" ]; then
|
|
apt-get install -y libssl-dev
|
|
pecl_install mongodb
|
|
elif [ "$extension" = "mcrypt" ]; then
|
|
apt-get install -y libmcrypt-dev
|
|
pecl_install mcrypt
|
|
elif [ "$extension" = "ssh2" ]; then
|
|
apt-get install -y libssh2-1-dev libssh2-1
|
|
pecl_install ssh2
|
|
elif [ "$extension" = "rdkafka" ]; then
|
|
apt-get install -y librdkafka-dev
|
|
pecl_install rdkafka
|
|
elif [ "$extension" = "varnish" ]; then
|
|
apt-get install -y libvarnishapi-dev
|
|
pecl_install varnish
|
|
elif [ "$extension" = "bcmath" ]; then
|
|
docker_php_ext_install bcmath
|
|
elif [ "$extension" = "pcntl" ]; then
|
|
docker_php_ext_install pcntl
|
|
elif [ "$extension" = "shmop" ]; then
|
|
docker_php_ext_install shmop
|
|
elif [ "$extension" = "gettext" ]; then
|
|
docker_php_ext_install gettext
|
|
elif [ "$extension" = "sockets" ]; then
|
|
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 "Zend OPcache"
|
|
elif [ "$extension" = "mysqli" ]; then
|
|
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" = "sodium" ]; then
|
|
apt-get install -y libsodium-dev
|
|
docker_php_ext_install sodium
|
|
elif [ "$extension" = "zip" ]; then
|
|
apt-get update && apt-get install -y libzip-dev
|
|
docker_php_ext_install zip
|
|
elif [ "$extension" = "memcached" ]; then
|
|
install_php_extensions memcached
|
|
elif [ "$extension" = "redis" ]; then
|
|
install_php_extensions redis
|
|
elif [ "$extension" = "xdebug" ]; then
|
|
install_php_extensions xdebug
|
|
elif [ "$extension" = "imap" ]; then
|
|
install_php_extensions imap
|
|
elif [ "$extension" = "intl" ]; then
|
|
install_php_extensions intl
|
|
elif [ "$extension" = "swoole" ]; then
|
|
install_php_extensions swoole
|
|
elif [ "$extension" = "pgsql" ]; then
|
|
install_php_extensions pgsql
|
|
elif [ "$extension" = "curl" ]; then
|
|
install_php_extensions curl
|
|
elif [ "$extension" = "sg11" ]; then
|
|
install_php_extensions sourceguardian "SourceGuardian"
|
|
elif [ "$extension" = "snmp" ]; then
|
|
install_php_extensions snmp
|
|
elif [ "$extension" = "mbstring" ]; then
|
|
install_php_extensions mbstring
|
|
elif [ "$extension" = "pdo_firebird" ]; then
|
|
install_php_extensions pdo_firebird
|
|
elif [ "$extension" = "pdo_dblib" ]; then
|
|
install_php_extensions pdo_dblib
|
|
elif [ "$extension" = "pdo_oci" ]; then
|
|
install_php_extensions pdo_oci
|
|
elif [ "$extension" = "pdo_odbc" ]; then
|
|
install_php_extensions pdo_odbc
|
|
elif [ "$extension" = "oci8" ]; then
|
|
install_php_extensions oci8
|
|
elif [ "$extension" = "odbc" ]; then
|
|
install_php_extensions odbc
|
|
elif [ "$extension" = "soap" ]; then
|
|
install_php_extensions soap
|
|
elif [ "$extension" = "xsl" ]; then
|
|
install_php_extensions xsl
|
|
elif [ "$extension" = "xmlrpc" ]; then
|
|
install_php_extensions xmlrpc
|
|
elif [ "$extension" = "readline" ]; then
|
|
install_php_extensions readline
|
|
elif [ "$extension" = "snmp" ]; then
|
|
install_php_extensions snmp
|
|
elif [ "$extension" = "tidy" ]; then
|
|
install_php_extensions tidy
|
|
elif [ "$extension" = "gmp" ]; then
|
|
install_php_extensions gmp
|
|
elif [ "$extension" = "ldap" ]; then
|
|
install_php_extensions ldap
|
|
elif [ "$extension" = "imagick" ]; then
|
|
install_php_extensions imagick
|
|
elif [ "$extension" = "amqp" ]; then
|
|
install_php_extensions amqp
|
|
elif [ "$extension" = "zookeeper" ]; then
|
|
install_php_extensions zookeeper
|
|
elif [ "$extension" = "ionCube" ]; then
|
|
install_php_extensions ioncube_loader "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
|
|
}
|
|
|
|
extension=$1
|
|
|
|
if [[ $extension == *,* ]]; then
|
|
echo "${extension}" | tr ',' '\n' | while read -r extension; do
|
|
install_extension $extension
|
|
done
|
|
else
|
|
install_extension $extension
|
|
if [ $ERROR_CODE -ne 0 ]; then
|
|
exit $ERROR_CODE
|
|
fi
|
|
fi
|
|
|
|
docker-php-source delete
|
|
|
|
exit 0
|