Hallo Steffen,
es ist relativ unproblematisch mehrere PHP-Versionen nebeneinander zu betreiben.
Ich glaube für PHP 7.0 ist nicht einmal ein neues Repo notwendig, da diese auch bei Ubuntu verfügbar sein müsste?!
Wichtig ist, dass durch das Installieren von weiteren Versionen die Default-Version geändert wird. Bei Ubuntu 18.04 ist dies die PHP 7.2. Heißt nach dem Installieren zurücksetzen auf PHP 7.2 nicht vergessen, um Probleme zu vermeiden.
Das geht mit:
sudo update-alternatives --config php
sudo update-alternatives --config php-cgi
Ich erstelle dann für die einzelnen Seiten einen FPM-Socket und nutze diesen dann über den virtuellen Host für die jeweilige Seite.
Ich poste hier mal eine Beispiel-Konfiguration, die für dein System angepasst werden muss:
Über:
sudo nano /etc/php/7.0/fpm/pool.d/moodle.conf
folgenden Code erstellen:
[moodle]
listen = /var/lib/php7.0-fpm/moodle.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0
chdir = /
env[HOSTNAME] = $HOSTNAME
env[TMP] = /var/www/moodle-seite.de/tmp
env[TMPDIR] = /var/www/moodle-seite.de/tmp
env[TEMP] = /var/www/moodle-seite.de/tmp
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
php_admin_value[open_basedir] = /var/www/moodle-seite.de/web:/var/www/moodle-seite.de/private:/var/www/moodle-seite.de/tmp
php_admin_value[session.save_path] = /var/www/moodle-seite.de/tmp
php_admin_value[upload_tmp_dir] = /var/www/moodle-seite.de/tmp
php_admin_value[sendmail_path] = „/usr/sbin/sendmail -t -i -f MAILADRESSE“
php_admin_flag[cgi.fix_pathinfo] = 1
Dann FPM neustarten und wenn der Service läuft wurde aus der conf ein individueller Socket unter /var/lib/php7.0-fpm/moodle.sock angelegt.
sudo service php7.0-fpm restart
sudo systemctl status php7.0-fpm.service
Vorteil an dieser Vorgehensweise ist, dass man die php.ini nicht verbiegen muss, da man sämtliche Infos für die jeweilige Seite/Anforderung über den individuellen Socket und die Befehle „php_admin_value[…] =“ und „php_admin_flag[…] =“ angeben kann. Das ist vor allem sinnvoll, wenn mehrere Anwendungen mit verschiedenen PHP-Anforderungen das jeweilige PHP nutzen sollen.
Dann muss der PHP-Inhalt nur noch über diesen Socket im virtuellen Host der Moodle-Seite aufgerufen werden. Leider kann ich hier nicht mit einem Beispiel helfen, da ich nginx nutze.
Bei nginx ist es einfach. Dort wird der PHP-Inhalt der jeweiligen Seite im virtuellen Host einfach über fastcgi_pass unix:/var/lib/php7.0-fpm/moodle.sock; aufgerufen.
Viele Grüße aus Leipzig
Steffen