#!/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