Maker-Hub bei GitHub Maker-Hub bei Printables Maker-Hub bei MakerWorld Maker-Hub bei YouTube

In diesem Tutorial zeige ich dir, wie du php8 auf einem Apache-Webserver unter Debian installierst. Schritt für Schritt führe ich dich durch den Prozess, damit deine Webanwendungen PHP als serverseitige Programmiersprache nutzen können.

Auf dem Beitragsbild habe ich das Logo von php8.3 stehen. Das liegt daran, dass das die aktuellste Version ist. In Debian wird im Moment noch die 8.2 ausgerollt. Dieses Tutorial kannst du sowohl für die 8.3 und 8.2 nutzen. Unterschiede bei der Installation werde ich detailliert aufzeigen.

Voraussetzung

Ich verwende wieder einen Raspberry Pi 2B mit Debian Version 12.

Stelle sicher, dass du bereits als normaler Benutzer über PuTTY oder direkt auf dem Debian-System angemeldet bist.

Vorbereitung für php8.3

Damit wir php8.3 installieren können, müssen wir apt-get das offizielle Repository von php bekannt machen.
Dazu laden wir den GPG-Schlüssel herunter und füge das PHP-Repository hinzu:

wget -qO /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" | sudo tee /etc/apt/sources.list.d/php.listCode-Sprache: Bash (bash)

Installation

Der erste Schritt ist, wie immer, apt-get zu aktualisieren:

sudo apt-get update -yCode-Sprache: Bash (bash)

Danach installieren wir php8 und den gängigen Plugins mit dem folgenden Befehl:

sudo apt-get install -y php libapache2-mod-php php-mysql php-common php-gd php-xml php-mbstring php-curl php-zip php-cli php-dev php-soap php-intlCode-Sprache: Bash (bash)

Hier eine kurze Erklärung zu den einzelnen Paketen:

  • php: Installiert die Haupt-PHP-Pakete, die zur Ausführung von PHP-Skripten erforderlich sind.
  • libapache2-mod-php: Ermöglicht die Integration von PHP mit dem Apache-Webserver, sodass PHP-Skripte ausgeführt werden können.
  • php-mysql: Bietet MySQL-Datenbankunterstützung für PHP, sodass PHP mit MySQL-Datenbanken interagieren kann.
  • php-common: Enthält allgemeine Dateien, die von mehreren PHP-Modulen verwendet werden.
  • php-gd: Ermöglicht die Erstellung und Bearbeitung von Grafiken direkt aus PHP-Skripten.
  • php-xml: Stellt XML-Unterstützung bereit, um XML-Daten in PHP zu verarbeiten.
  • php-mbstring: Bietet Unterstützung für Multibyte-Zeichenketten, die für die Arbeit mit verschiedenen Zeichensätzen erforderlich ist.
  • php-curl: Ermöglicht die Kommunikation mit verschiedenen Servern über verschiedene Protokolle, z.B. HTTP, FTP.
  • php-zip: Fügt Unterstützung für die Arbeit mit ZIP-Archiven in PHP hinzu.
  • php-cli: Installiert die PHP-Befehlszeilenschnittstelle, um PHP-Skripte von der Kommandozeile aus auszuführen.
  • php-dev: Enthält Dateien, die für die Kompilierung von PHP-Erweiterungen erforderlich sind.
  • php-soap: Ermöglicht die Nutzung von SOAP-Webdiensten in PHP.
  • php-intl: Stellt Internationalisierungsfunktionen bereit, die für die Entwicklung mehrsprachiger Anwendungen nützlich sind.

Unter https://www.php.net/manual/en/extensions.php findest du sämtliche Verfügbare Module für PHP.

Konfiguration

Diese Einstellungen helfen, die Sicherheit deines PHP-Setups zu verbessern aber trotzdem effizient zu halten. Für php8.2 führe folgende Befehle aus um die Konfigurationsdatei zu bearbeiten:

sudo nano /etc/php/8.2/apache2/php.iniCode-Sprache: Bash (bash)

für php8.3 führe folgenden Befehl aus:

sudo nano /etc/php/8.3/apache2/php.iniCode-Sprache: Bash (bash)

Prüfe die folgenden Optionen und setzt die Werte entsprechend

display_errors = Off
expose_php = Off
max_execution_time = 30
memory_limit = 256M
file_uploads = On
upload_max_filesize = 64M
post_max_size = 64M
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
open_basedir = /var/www/:/tmp/
log_errors = On
error_log = /var/log/php_errors.log
# Optional
session.cookie_secure = 1
Code-Sprache: Bash (bash)
  • display_errors = Off: Verhindert, dass PHP-Fehler im Browser angezeigt werden, was sensible Informationen preisgeben könnte.
  • expose_php = Off: Verhindert, dass PHP seine Version in HTTP-Headern preisgibt.
  • max_execution_time = 30: Begrenzt die maximale Ausführungszeit eines Skripts, um endlose Schleifen zu verhindern.
  • memory_limit = 256M: Begrenzt die Menge des Speichers, den ein Skript verwenden kann.
  • file_uploads = On: Erlaubt das Hochladen von Dateien.
  • upload_max_filesize = 64M und post_max_size = 64M: Legt die maximale Größe für hochgeladene Dateien und POST-Daten fest.
  • disable_functions: Deaktiviere PHP-Funktionen, die das Betriebssystem beeinflussen können. Je weniger ausgeführt werden darf, desto besser für die Sicherheit. Bearbeite die Liste nach deinen Bedürfnissen.
  • open_basedir: Begrenze die Dateisystemzugriffe auf bestimmte Verzeichnisse.
  • log_errors und error_log: Aktiviere Fehlerprotokollierung und lege die Protokolldatei fest.
  • session.cookie_secure: Setze Cookies nur über sichere HTTPS-Verbindungen. Dies solltest du nur aktivieren, wenn du SSL/TLS bereits aktiv nutzt. Ansonsten kann es bei Webanwendungen zu Problemen kommen.

Jetzt müssen wir noch php in Apache aktivieren. Dazu muss das Modul von php in Apache aktiviert werden.
Für php8.2 führe folgende Befehle aus:

sudo a2enmod php8.2
sudo a2dismod php8.3Code-Sprache: Bash (bash)

oder für php8.3:

sudo a2enmod php8.3
sudo a2dismod php8.2Code-Sprache: Bash (bash)

Zum Schluss muss Apache gestartet werden.

sudo systemctl restart apache2Code-Sprache: Bash (bash)

Abschluss

Du hast nun erfolgreich php8 auf deinem Apache-Webserver unter Debian installiert und konfiguriert. Denke daran, regelmäßig Updates durchzuführen und die Sicherheitsrichtlinien zu überprüfen, um deine Webanwendungen geschützt zu halten. Um zu testen, ob php korrekt funktioniert, erstelle eine Datei namens info.php im Webverzeichnis mit folgendem Inhalt:

<?php
  phpinfo();
?>Code-Sprache: HTML, XML (xml)

Rufe diese Datei in deinem Browser auf, um die PHP-Konfigurationsseite zu sehen:

http://your-server-ip/info.php

Du solltest folgende Seite sehen:

Weitere Informationen zu php sind unter https://www.php.net/ zu finden.

Wenn dir meine Arbeit gefällt, würde ich mich über einen Kaffee freuen