PHP ist eine der am häufigsten verwendeten Backend Programmiersprachen. Viele beliebte CMS und Frameworks wie WordPress oder Laravel sind in PHP geschrieben. Siehe auch meinen Artikel PHP auf Ubuntu 20.04.
PHP 8.1 ist die aktuellste Version der PHP-Sprache. Sie enthält mehrere grundlegende Änderungen, Leistungsverbesserungen und viele neue Funktionen wie benannte Argumente, JIT-Compiler, Union-Typen, Match-Ausdruck und vieles mehr.
Dieser Artikel zeigt Ihnen, wie Sie PHP 8 auf Ubuntu 20.04 installieren und mit Nginx und Apache integrieren können. Zum Zeitpunkt der Erstellung dieses Artikels enthalten die Standard-Repositories von Ubuntu 20.04 die Version PHP 7.4. Hier werde ich PHP aus dem ondrej/php PPA-Repository installieren.
Bevor Du allerdings auf PHP 8 aktualisierst oder es installierst, solltest Du sicherstellen, dass Deine Anwendungen PHP 8 unterstützen.
Unknown Expert
Welche Extensions sind derzeit installiert
Einfach die Liste aller derzeit installierten PHP packages ausgeben:
dpkg -l | grep php
Oder besser nur die package Namen und gleich in eine Datei, das benötigst Du später um dieselben packages auch für Deine neue PHP Version zu installieren.
dpkg-query -f '${Package}\n' -W | grep php | tee phppackages.txt
PHP-Repository aktivieren
Ondřej Surý (ein Debian-Entwickler) unterhält ein Repository, das mehrere PHP-Versionen enthält. Um das Repository zu aktivieren, führe folgendes aus:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php # PRESS ENTER wenn danach gefragt wird
sudo apt update
Wenn „Press [ENTER] to continue or Ctrl-c to cancel adding it.“ gefragt wird, einfach ENTER drücken.
Installiere PHP 8 für Apache
Wenn Du Apache als Webserver verwendest, kannst Du PHP als Apache-Modul installieren oder PHP-FPM ausführen. Ich installiere PHP als Apache Module.
sudo apt install -y php8.1 libapache2-mod-php8.1 php8.1-cli
Nun musst Du nur noch alle Extensions installieren. Dies geht indem Du immer php8.1 angibst. Also z.B. für die mysql und gd Extensions:
sudo apt install -y php8.1-mysql php8.1-gd
Wenn Du mehrere Extensions gleichzeitig installieren wills kanns Du auch folgendes Format verweneden:
sudo apt install -y php8.1-{bcmath,bz2,cli,common,curl,gd,imap,intl,mbstring,mysql,opcache,readline,xml,zip}
Willst Du alle Packages der alten Version installieren musst Du nun dein phppackages.txt entsprechend editieren (alle Packages ohne PHP-Version bleiben. Dort wo eine Version dabei ist einfach auf die neue Version ändern und dann folgenden Befehl ausführen:
xargs sudo apt install -y <phppackages.txt
Kommt ein Fehler wie: „E: Package 'php8.1-json' has no installation candidate
“ Dann ist dieses Package meißt schon Standardmäßig installiert. Zur Sicherheit kannst Du die Fehlermeldung googlen …
Nun lösche diesen Eintrag aus der txt Datei heraus und starte den Befehl nochmals.
Nun einfach auf PHP 8 umsteigen
sudo a2dismod php7.4
sudo a2enmod php8.1
sudo systemctl restart apache2
PHP 8 in der Kommandozeile
Einfach folgenden Befehl eingeben:
sudo update-alternatives --set php /usr/bin/php8.1
php --version
Du kannst natürlich auch zwischen den existierenden Alternativen umschalten:
sudo update-alternatives --config php