#!/bin/bash
# vte.ego.it — PHP 7.4 FPM + PHP 8.3 FPM (Ubuntu 24.04)
# Uso: sudo bash /var/www/html/server-ops/ego/install-dual-php-fpm-apache.sh

set -euo pipefail

if [[ "${EUID:-0}" -ne 0 ]]; then
	echo "Esegui come root: sudo bash $0" >&2
	exit 1
fi

. /etc/os-release
echo "[INFO] OS: ${PRETTY_NAME:-unknown}"

export DEBIAN_FRONTEND=noninteractive

apt-get update -qq
apt-get install -y software-properties-common ca-certificates lsb-release python3

if ! grep -qr 'ondrej/php' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null; then
	add-apt-repository -y ppa:ondrej/php
fi
apt-get update -qq

# Rimuove metapacchetti PHP generici di Ubuntu che confliggono con php-common (Ondrej)
echo "[INFO] Rimozione pacchetti PHP generici in conflitto (php-apcu, php-imagick)..."
apt-get remove -y php-apcu php-imagick php-apcu-bc 2>/dev/null || true
apt-get install -y --allow-change-held-packages php-common 2>/dev/null || true

PHP8_VER="8.3"
if ! apt-cache policy "php${PHP8_VER}-fpm" 2>/dev/null | awk '/Candidate:/ {print $2}' | grep -qv '(none)'; then
	echo "[ERR] php${PHP8_VER}-fpm non disponibile su questa distro." >&2
	exit 1
fi

PHP_PKGS=(
	php7.4-fpm php7.4-cli php7.4-common php7.4-mysql php7.4-xml php7.4-curl php7.4-gd php7.4-mbstring
	php7.4-zip php7.4-bcmath php7.4-imap php7.4-ldap php7.4-intl php7.4-readline php7.4-opcache php7.4-soap php7.4-bz2
	php8.3-fpm php8.3-cli php8.3-common php8.3-mysql php8.3-xml php8.3-curl php8.3-gd php8.3-mbstring
	php8.3-zip php8.3-bcmath php8.3-imap php8.3-ldap php8.3-intl php8.3-readline php8.3-opcache php8.3-soap
)

apt-get install -y --no-install-recommends "${PHP_PKGS[@]}"
apt-get install -y --no-install-recommends php7.4-apcu php8.3-apcu 2>/dev/null || true
apt-get install -y --no-install-recommends php7.4-imagick php8.3-imagick 2>/dev/null || true

if a2query -m php7.4 &>/dev/null; then a2dismod -f php7.4 || true; fi
if dpkg -l libapache2-mod-php7.4 2>/dev/null | grep -q '^ii'; then
	apt-get remove -y libapache2-mod-php7.4 || true
fi

a2enmod proxy proxy_fcgi setenvif ssl rewrite headers || true
a2dismod -f mpm_prefork 2>/dev/null || true
a2enmod mpm_event

install -m0644 /dev/stdin /etc/php/7.4/fpm/pool.d/zz-phpmyadmin-ego.conf <<'EOFPM'
[phpmyadmin]
user = www-data
group = www-data
listen = /run/php/php7.4-fpm-phpmyadmin.sock
listen.owner = www-data
listen.group = www-data
pm = ondemand
pm.max_children = 8
chdir = /usr/share/phpmyadmin
php_admin_value[upload_tmp_dir] = /var/lib/phpmyadmin/tmp
php_admin_value[open_basedir] = /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/:/usr/share/php/PhpMyAdmin/:/usr/share/php/Symfony/:/usr/share/php/Twig/:/usr/share/php/Twig-Extensions/:/usr/share/php/ReCaptcha/:/usr/share/php/Psr/Container/:/usr/share/php/Psr/Cache/:/usr/share/php/Psr/Log/:/usr/share/php/Psr/SimpleCache/
EOFPM

for VER in 7.4 8.3; do
	install -m0644 /dev/stdin "/etc/php/${VER}/fpm/conf.d/99-vte-ego.ini" <<'EOFINI'
memory_limit = 512M
max_execution_time = 300
max_input_vars = 5000
post_max_size = 128M
upload_max_filesize = 128M
date.timezone = Europe/Rome
EOFINI
done

install -m0644 /dev/stdin /etc/apache2/conf-available/phpmyadmin-php74-fpm-ego.conf <<'EOFA'
<Directory /usr/share/phpmyadmin>
	<FilesMatch "\.php$">
		SetHandler "proxy:unix:/run/php/php7.4-fpm-phpmyadmin.sock|fcgi://localhost/"
	</FilesMatch>
</Directory>
EOFA
a2enconf phpmyadmin-php74-fpm-ego

install -m0644 /dev/stdin /etc/apache2/conf-available/ego-php74-fpm-global.conf <<'EOFC'
<FilesMatch ".+\.(php|phar|phtml)$">
	SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
EOFC
a2enconf ego-php74-fpm-global

install -m0644 /dev/stdin /etc/apache2/conf-available/zz-ego-vte-php83-fpm.conf <<'EOFC'
<Directory /var/www/html/vte23083_2711>
	<FilesMatch "\.(php|phar|phtml)$">
		SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
	</FilesMatch>
</Directory>
EOFC
a2enconf zz-ego-vte-php83-fpm

systemctl enable --now php7.4-fpm php8.3-fpm
systemctl restart php7.4-fpm php8.3-fpm
apache2ctl configtest
systemctl restart apache2

echo "[OK] PHP 7.4 + 8.3 FPM attivi. VTE su php8.3-fpm."
