77 lines
2.1 KiB
Bash
77 lines
2.1 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
export DEBCONF_NONINTERACTIVE_SEEN=true
|
|
|
|
# Validate required variables
|
|
if [ -z "${PHP_VERSIONS:-}" ]; then
|
|
echo "ERROR: PHP_VERSIONS environment variable is not set" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${DEF_PHP_INTERPRETER:-}" ]; then
|
|
echo "ERROR: DEF_PHP_INTERPRETER environment variable is not set" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Verify package availability before installation
|
|
apt-get update
|
|
|
|
# Install each PHP version with validation
|
|
for version in $PHP_VERSIONS; do
|
|
# Validate version format (X.Y)
|
|
if ! echo "$version" | grep -Eq '^[0-9]+\.[0-9]+$'; then
|
|
echo "ERROR: Invalid PHP version format '$version'" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Installing PHP $version packages..."
|
|
if ! apt-get install -y \
|
|
php${version}-fpm \
|
|
php${version}-bcmath \
|
|
php${version}-bz2 \
|
|
php${version}-common \
|
|
php${version}-curl \
|
|
php${version}-dba \
|
|
php${version}-enchant \
|
|
php${version}-gd \
|
|
php${version}-gmp \
|
|
php${version}-http \
|
|
php${version}-imap \
|
|
php${version}-interbase \
|
|
php${version}-intl \
|
|
php${version}-ldap \
|
|
php${version}-mbstring \
|
|
php${version}-memcache \
|
|
php${version}-memcached \
|
|
php${version}-mysql \
|
|
php${version}-odbc \
|
|
php${version}-opcache \
|
|
php${version}-pgsql \
|
|
php${version}-ps \
|
|
php${version}-pspell \
|
|
php${version}-raphf \
|
|
php${version}-readline \
|
|
php${version}-snmp \
|
|
php${version}-soap \
|
|
php${version}-sqlite3 \
|
|
php${version}-stomp \
|
|
php${version}-sybase \
|
|
php${version}-tidy \
|
|
php${version}-xdebug \
|
|
php${version}-xml \
|
|
php${version}-xsl \
|
|
php${version}-zip; then
|
|
echo "ERROR: Failed to install PHP $version packages" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Set default PHP version with validation
|
|
if ! update-alternatives --set php "/usr/bin/php${DEF_PHP_INTERPRETER}"; then
|
|
echo "ERROR: Failed to set default PHP interpreter to $DEF_PHP_INTERPRETER" >&2
|
|
exit 1
|
|
fi
|
|
|