Schlagwort-Archive: Apache Webserver

Der Apache HTTP Server ist in fast allen Linux-Distributionen und in macOS standardmäßig enthalten.

PHP-Version und Modul wechseln in Debian mit Apache2

Die PHP-Version und Modul auf Debian zwischen mehreren PHP-Versionen wechseln und für Apache2 aktivieren.

Auf einem Debian 10 und Debian 11 können mehrere PHP-Versionen installiert sein, dabei wird eine PHP-Version für das System und den Apache2-Webserver festgelegt und aktiviert.

Gehen wir davon aus, dass mehrere PHP-Versionen auf dem Debian-System installiert sind. Wie kann ich die PHP-Version für Apache2 beliebig wechseln? In diesem Tutorial zeigen wir, wie man zwischen mehreren verschiedenen PHP-Versionen wechselt. Für den Apache2-Webserver und im CLI.

PHP-Version und das Modul als Standard aktivieren

Es soll PHP 8.2 als aktive PHP-Version für CLI und Apache2 festgelegt werden. Dies geschieht indem man die Apache2-Module für alle anderen installierten PHP-Versionen deaktiviert und aus dem CLI mit dem Befehl update-alternatives festlegt.

$ update-alternatives --set php /usr/bin/php8.2
$ update-alternatives --set phar /usr/bin/phar8.2
$ update-alternatives --set phar.phar /usr/bin/phar.phar8.2

  Phar ist eine PHP-Erweiterung, die es ermöglicht, aus einer komprimierten Archivdatei heraus Programme oder Dateien im PHAR-Format (PHP-Archiv) verpackt zu verarbeiten. Die mit der Phar-PHP-Klasse erzeugten Archive werden in bzip2 und gzip-Komprimierung erstellt.

PHP-Modul für Apache2 wechseln und aktivieren

Die PHP-Module werden Mithilfe des Apache helper aktiviert. Für den Apache2-Webserver wird das entsprechende Modul mit dem Befehl a2enmod aktiviert, und mit a2dismod wird das Modul deaktiviert..

$ a2dismod php7.4
$ a2enmod php8.2
$ systemctl restart apache2

a2enmod ist ein Skript, dass das angegebene Modul innerhalb der Apache2-Konfiguration aktiviert. Dies geschieht durch die Erstellung von Symlinks innerhalb /etc/apache2/mods-enabled.
a2dismod ist ein Skript, um ein Modul zu deaktivieren, indem es diese Symlinks entfernt. Wenn man versucht, ein bereits aktiviertes Modul zu aktivieren oder ein bereits deaktiviertes zu deaktivieren, wird ein Fehler ausgegeben.

Es ist möglich, mehrere PHP-Module in einem Befehl zu deaktivieren.

$ a2dismod php5.6 php7.1 php7.3 php7.4 php8.0 php8.1

Mit dem Apache 2-Syntaxvalidator können alle auf dem System verfügbaren PHP-Module ausgegeben werden.

$ apache2ctl -M

Bei Red Hat oder Rocky Linux und AlmaLinux (CentOS) ist der Befehl.

$ apachectl -M
Loaded Modules:
 core_module (static)
 mime_module (shared)
 php_module (shared)
...

Es werden alle auf dem System installierten Apache2 PHP-Module ausgegeben, wie hier in verkürzter Form.

a2query ist ein Programm zum Abrufen von Konfigurationswerten des Apache 2 HTTP-Webserver, zulässige Werte werden zurückgegeben, selbst wenn der Apache 2-Syntaxvalidator fehlschlägt.

$ a2query -m | grep php
php8.2 (enabled by site administrator)

Ebenso kann man sich die verfügbaren Apache2 PHP-Module auf dem Filesystem mithilfe von find abrufen und anzeigen lassen.

$ find /etc/apache2/mods-available/ -name *php\*

Die systemweiten PHP Einstellungen findet man unter /etc/php, für änderungen mit Apache2 editiert man die Datei php.ini.

$ vi /etc/php/8.2/apache2/php.ini

quote  Im Verzeichnispfad die Versionsnummer entsprechend ersetzen.

Aktive PHP-Version überprüfen

Welche PHP-Version aktiv ist? kann aus CLI abgerufen werden, die auf dem System aktiv festgelegte PHP-Version wie folgt abfragen.

$ php -v
PHP 8.2.3 (cli) (built: Feb 14 2023 16:53:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.3, Copyright (c), by Zend Technologies

Mit anlegen einer php-Datei und folgendem Inhalt, zeigt der Apache-Webserver die aktuell ausgeführte PHP-Version und die Module.

<?php
phpinfo();
?>

Die php-Datei phpinfo.php in der DocumentRoot /var/www/html anlegen, sofern nicht eine andere DocumentRoot vorgesehen ist.

Im Browser wird die für den Apache2-Webserver konfigurierte PHP-Version und die PHP-Module angezeigt: http://ip_oder_fqdn/phpinfo.php

Beispiel: http://192.168.3.2/phpinfo.php

PHP-Version und Modul wechseln auf Debian mit Apache2

  Bei einem produktiven System sollte phpinfo.php nach beendeter Überprüfung wieder aus der DocumentRoot entfernt werden.

PHP Upgrade Installation mit Apache auf Debian 11

PHP 8.2 Upgrade und Installation unter Debian mit Apache

In diesem Tutorial wird beschrieben, wie man ein PHP 8.2 Upgrade schnell und einfach installiert. Für den Apache Webserver unter Debian 9, Debian 10 und Debian 11. PHP ist die weit verbreitete Server-Skriptsprache, für dynamische und interaktive Webseiten und Content Managegemt Systeme.

In nur 5 Schritte wird PHP 8.2 für Apache2 auf Debian installiert.

1. Debian als root aktualisieren

$ su -
$ apt update
$ apt upgrade -y && reboot

2. SURY PHP PPA Repository hinzufügen

SURY ist ein Drittanbieter-Repository, das aktuelle PHP Versionen für Debian GNU/Linux anbietet, dieses als root hinzugefügt wird.

$ apt -y install lsb-release apt-transport-https ca-certificates wget
$ wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

3. PHP 8.2 auf Debian installieren

$ apt update
$ apt -y install php8.2
$ update-alternatives --set php /usr/bin/php8.2

  Es kann mehr als eine PHP Version auf dem System installiert sein, update-alternatives --set php [version] aktiviert die Version.

4. Wichtige PHP 8.2 Module auf Debian installieren

$ apt -y install php8.2-cli php8.2-curl php8.2-gd php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-readline php8.2-xml php8.2-xsl php8.2-zip php8.2-bz2

 5. PHP 8.2 Modul für Apache verfürgbar machen

$ apt -y install libapache2-mod-php8.2
$ systemctl reload apache2

Fertig! die Installation ist nun gemacht. Möchte man wissen, welche installierte PHP-Version und welche Module tatsächlich verfügbar sind, zeigt der nächste Abschnitt.

Die Installierte PHP Version überprüfen

$ php -v
PPHP 8.2.3 (cli) (built: Feb 14 2023 16:53:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.3, Copyright (c), by Zend Technologies

Die PHP Konfiguration anzeigen und ändern

Zur überprüfung wird die aktuelle PHP-Version und die Einstellungen angezeigt, in dem man eine .php-Datei mit folgendem Inhalt erstellt. Diese die Detail Einstellungen in Tabellenform im Webbrowser ausgibt.

<?php
phpinfo();
?>

Die Datei als phpinfo.php im Verzeichnis „/html“ speichern. Die neu erstellte .php-Datei anschliessend in einem Webbrowser öffnen.

http://meine-domain/phpinfo.php
phpinfo in PHP Upgrade Installation mit Apache auf Debian
Abbildung: http://meine-domain/phpinfo.php

Die systemweiten PHP Einstellungen findet man unter dem Pfad /etc/php, für änderungen mit Apache 2 editiert man die Datei php.ini.

$ vi /etc/php/8.2/apache2/php.ini

Wird die installierte PHP-Version nicht angezeigt, muss das Modul mit dem Apache helper, mit a2dismod aktiviert werden. Hier ist es php7.4 das deaktiviert wird, die entsprechende Versionsnummer ggf. ersetzen.

PHP Upgrade mit Apache auf Debian Überpüfen

$ a2dismod php7.4
$ a2enmod php8.2
$ systemctl restart apache2

Nach dem Wechsel der Apache 2 PHP-Module die phpinfo.php Seite erneut im Webbrowser öffnen.

Die für Apache 2 verfügbaren PHP-Module sind im Apache Webserver Pfad unter /etc/apache2/mods-available abrufbar.

$ ll /etc/apache2/mods-available/php*
-rw-r--r-- 1 root root 855 Jul  5  2020 /etc/apache2/mods-available/php7.3.conf
-rw-r--r-- 1 root root 102 Jul  5  2020 /etc/apache2/mods-available/php7.3.load
-rw-r--r-- 1 root root 855 Dec 20 22:32 /etc/apache2/mods-available/php7.4.conf
-rw-r--r-- 1 root root 102 Dec 20 22:32 /etc/apache2/mods-available/php7.4.load
-rw-r--r-- 1 root root 855 Dec 20 22:32 /etc/apache2/mods-available/php8.2.conf
-rw-r--r-- 1 root root 101 Dec 20 22:32 /etc/apache2/mods-available/php8.2.load

Die Apache 2 Module mit a2dismod deaktivieren, mit a2enmod wird ein Apache Modul aktiviert.

Aufschluss über die Modul Informationen gibt der Befehl apt info.

$ apt info libapache2-mod-php8.2

Die php Version einer Website kann auch in der Apache .htaccess Datei festgelegt werden.

Action php /cgi-php82/php
AddHandler php82 .php