2019. július 10., szerda

Több PHP egy szerveren

A leírásomat ezek alapján raktam össze:
- egymás mellé több PHP verzió telepítése egyszerűen:
    https://tecadmin.net/install-php-debian-9-stretch/
- hogyan lehet meghatározni, hogy mikor melyik verzióval fussanak a PHP scriptek:
    https://tecadmin.net/install-multiple-php-version-apache-ubuntu/

A sury.org -on az olvasható, hogy 2000 óta Debian fejlesztő, nagyrészt hozzá kötődnek a PHP-vel kapcsolatos dolgok.
Telepíthető tőle több PHP verzió is: https://packages.sury.org/php/

Hozzáadjuk az repository-hoz:

Debian 9-ben így csináltam:

sudo apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list

Debian 10 alatt ez a script működött jól:
https://packages.sury.org/php/README.txt
#!/bin/bash
# To add this repository please do:

if [ "$(whoami)" != "root" ]; then
    SUDO=sudo
fi

${SUDO} apt-get -y install apt-transport-https lsb-release ca-certificates
${SUDO} wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
${SUDO} sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
${SUDO} apt-get update 

PHP verzió telepítés:

sudo apt update
sudo apt install php5.6
sudo apt install php5.6-cli php5.6-common php5.6-curl php5.6-mbstring php5.6-mysql php5.6-xml php5.6-fpm

Más csomagok is elérhetők és nem fontos mind, ami a példában szerepel. Viszont az fpm (FastCGI Process Manager) kelleni fog ahhoz a megoldáshoz, ami lentebb szerepel, amivel meghatározható, hogy melyik script melyik verzióval fusson.

Ugyan így a többi verzió: 7.0, 7.1, 7.2, 7.3

Utána az /etc/apache2 -be csináltam egy php-conf könyvtárat, és raktam bele egy php5.6 fájlt:
    <filesmatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
    </filesmatch>

Ugyan így a többi verzióhoz mindegyikhez egy ilyen fájl, átírva benne a PHP verziót.

A sites-available könyvtárban pedig a VirtualHost-on belül include-olom, hogy melyik PHP verziót akarom használni:
<virtualhost *:80>
    ...
    Include php-conf/php5.6
</virtualhost>

Beállíthatjuk, hogy melyik legyen az alapértelmezett PHP verzió:
a2dismod php.5.6
a2enmod php.7.0
a2dismod php.7.1
a2dismod php.7.2
a2dismod php.7.3
(Csak az egyik legyen enabled, különben ha nincs megadva a PHP verzió a site-nál, akkor hiba lesz!)

Végül engedélyezni kell ezt a modult:
a2enmod proxy_fcgi
service apache2 restart

Ennyi.