> For the complete documentation index, see [llms.txt](https://docs.instantroot.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instantroot.de/kvm-server/linux/php-installieren.md).

# PHP installieren

PHP wird häufig für Webseiten, Webanwendungen und Content-Management-Systeme wie WordPress, Joomla oder Laravel verwendet.

In diesem Artikel erklären wir dir, wie du PHP auf einem KVM-Server installierst und prüfst, ob PHP korrekt funktioniert.

### Voraussetzungen

Du benötigst:

* einen KVM-Server mit Linux
* Root-Zugriff oder einen Benutzer mit sudo-Rechten
* eine bestehende SSH-Verbindung
* ein installiertes Betriebssystem wie Debian, Ubuntu, AlmaLinux oder Rocky Linux

Für klassische Webseiten wird zusätzlich ein Webserver benötigt, zum Beispiel Apache oder Nginx.

### Was ist PHP?

PHP ist eine serverseitige Programmiersprache.

Das bedeutet: PHP-Code wird auf dem Server ausgeführt. Der Besucher deiner Webseite sieht nicht den PHP-Code, sondern das Ergebnis, das der Server ausgibt.

PHP wird häufig genutzt für:

* WordPress
* Joomla
* Drupal
* Laravel
* Shop-Systeme
* Foren
* eigene Webanwendungen
* Adminoberflächen
* APIs

### Vor der Installation

Aktualisiere zuerst dein System.

#### Debian und Ubuntu

Paketlisten aktualisieren:

`apt update`

Installierte Pakete aktualisieren:

`apt upgrade`

#### AlmaLinux und Rocky Linux

System aktualisieren:

`dnf update`

### PHP unter Debian oder Ubuntu installieren

Auf Debian und Ubuntu installierst du PHP über den Paketmanager `apt`.

Grundinstallation:

`apt install php`

Damit wird PHP installiert. Für viele Webseiten reicht das allein jedoch nicht aus, weil häufig zusätzliche PHP-Erweiterungen benötigt werden.

### PHP-Version prüfen

Nach der Installation kannst du prüfen, ob PHP funktioniert.

Befehl:

`php -v`

Wenn PHP korrekt installiert ist, wird dir eine Ausgabe mit der installierten PHP-Version angezeigt.

Beispiel:

`PHP 8.2.7 (cli)`

Die genaue Version kann je nach Betriebssystem und Paketquelle abweichen.

### Wichtige PHP-Erweiterungen installieren

Viele Anwendungen benötigen zusätzliche PHP-Erweiterungen.

Für typische Webanwendungen kannst du unter Debian oder Ubuntu folgende Pakete installieren:

`apt install php-cli php-common php-curl php-gd php-mbstring php-mysql php-xml php-zip php-intl php-bcmath`

Diese Erweiterungen werden häufig benötigt.

| Paket          | Zweck                                      |
| -------------- | ------------------------------------------ |
| `php-cli`      | PHP über die Kommandozeile ausführen       |
| `php-common`   | gemeinsame PHP-Grundfunktionen             |
| `php-curl`     | HTTP-Anfragen aus PHP heraus               |
| `php-gd`       | Bildverarbeitung                           |
| `php-mbstring` | Verarbeitung von Sonderzeichen und UTF-8   |
| `php-mysql`    | Verbindung zu MySQL oder MariaDB           |
| `php-xml`      | Verarbeitung von XML-Dateien               |
| `php-zip`      | ZIP-Dateien erstellen und entpacken        |
| `php-intl`     | Internationalisierung und Sprachfunktionen |
| `php-bcmath`   | Berechnungen mit großen Zahlen             |

### PHP unter AlmaLinux oder Rocky Linux installieren

Auf AlmaLinux und Rocky Linux installierst du PHP über `dnf`.

Grundinstallation:

`dnf install php`

PHP-Version prüfen:

`php -v`

Häufig benötigte Erweiterungen installieren:

`dnf install php-cli php-common php-curl php-gd php-mbstring php-mysqlnd php-xml php-zip php-intl php-bcmath`

### PHP mit Apache verwenden

Wenn du Apache als Webserver nutzt, installierst du zusätzlich das passende Apache-Modul oder PHP-FPM.

Auf Debian oder Ubuntu:

`apt install apache2 php libapache2-mod-php`

Danach Apache neu starten:

`systemctl restart apache2`

Auf AlmaLinux oder Rocky Linux:

`dnf install httpd php`

Danach Apache starten und aktivieren:

`systemctl enable httpd`

`systemctl start httpd`

Wenn Apache bereits läuft, starte ihn neu:

`systemctl restart httpd`

### PHP mit Nginx verwenden

Nginx führt PHP nicht direkt aus. Dafür wird PHP-FPM verwendet.

PHP-FPM ist ein Dienst, der PHP-Anfragen verarbeitet und an Nginx zurückgibt.

#### Debian und Ubuntu

PHP-FPM installieren:

`apt install php-fpm`

Status prüfen:

`systemctl status php*-fpm`

#### AlmaLinux und Rocky Linux

PHP-FPM installieren:

`dnf install php-fpm`

PHP-FPM starten und aktivieren:

`systemctl enable php-fpm`

`systemctl start php-fpm`

### PHP-Testdatei erstellen

Um zu prüfen, ob PHP über den Webserver funktioniert, kannst du eine Testdatei erstellen.

Bei Apache liegt das Webverzeichnis häufig hier:

`/var/www/html`

Erstelle eine Datei:

`nano /var/www/html/info.php`

Füge folgenden Inhalt ein:

`<?php phpinfo(); ?>`

Speichere die Datei und öffne sie im Browser.

Beispiel:

`http://SERVER-IP/info.php`

Wenn PHP korrekt funktioniert, siehst du eine PHP-Informationsseite.

### Testdatei wieder löschen

Die Datei `info.php` zeigt viele Informationen über dein System an.

Lösche sie nach dem Test wieder.

Befehl:

`rm /var/www/html/info.php`

**Wichtig:** Lasse `phpinfo()` nicht dauerhaft öffentlich erreichbar. Die Seite kann technische Informationen anzeigen, die für Angreifer nützlich sein können.

### PHP-Konfiguration finden

Die PHP-Konfigurationsdatei heißt meistens `php.ini`.

Je nach System und PHP-Modus liegt sie an unterschiedlichen Orten.

Typische Pfade sind:

| Pfad                         | Verwendung                         |
| ---------------------------- | ---------------------------------- |
| `/etc/php/*/apache2/php.ini` | PHP mit Apache unter Debian/Ubuntu |
| `/etc/php/*/fpm/php.ini`     | PHP-FPM unter Debian/Ubuntu        |
| `/etc/php.ini`               | häufig bei AlmaLinux/Rocky Linux   |
| `/etc/php.d/`                | zusätzliche PHP-Konfigurationen    |

Du kannst den Pfad auch über PHP prüfen:

`php --ini`

### Häufige PHP-Einstellungen

In der `php.ini` kannst du wichtige Werte anpassen.

Typische Einstellungen sind:

| Einstellung           | Bedeutung                                 |
| --------------------- | ----------------------------------------- |
| `memory_limit`        | maximaler Arbeitsspeicher pro PHP-Prozess |
| `upload_max_filesize` | maximale Größe einzelner Uploads          |
| `post_max_size`       | maximale Größe von POST-Daten             |
| `max_execution_time`  | maximale Laufzeit eines PHP-Skripts       |
| `date.timezone`       | Zeitzone für PHP                          |

Beispielwerte:

`memory_limit = 256M`

`upload_max_filesize = 64M`

`post_max_size = 64M`

`max_execution_time = 120`

`date.timezone = Europe/Berlin`

Nach Änderungen an der PHP-Konfiguration musst du den Webserver oder PHP-FPM neu starten.

### Dienste nach Änderungen neu starten

Bei Apache unter Debian oder Ubuntu:

`systemctl restart apache2`

Bei Apache unter AlmaLinux oder Rocky Linux:

`systemctl restart httpd`

Bei PHP-FPM:

`systemctl restart php*-fpm`

Falls der Platzhalter nicht funktioniert, prüfe den genauen Dienstnamen:

`systemctl list-units | grep php`

### PHP für WordPress

WordPress benötigt PHP und mehrere Erweiterungen.

Für Debian oder Ubuntu kannst du häufig diese Pakete installieren:

`apt install php php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl`

Für AlmaLinux oder Rocky Linux:

`dnf install php php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip php-intl`

Zusätzlich benötigst du eine Datenbank, zum Beispiel MariaDB oder MySQL.

### PHP für Laravel

Laravel benötigt in der Regel PHP, Composer und mehrere PHP-Erweiterungen.

Typische Pakete unter Debian oder Ubuntu:

`apt install php-cli php-mbstring php-xml php-curl php-zip php-bcmath php-mysql unzip`

Composer wird für die Installation von Laravel-Abhängigkeiten benötigt.

### Mehrere PHP-Versionen

Manche Anwendungen benötigen eine bestimmte PHP-Version.

Die verfügbare PHP-Version hängt von deinem Betriebssystem und den eingebundenen Paketquellen ab.

Wenn du eine andere PHP-Version benötigst, solltest du vorher prüfen:

* welche PHP-Version deine Anwendung benötigt
* welche PHP-Version dein Betriebssystem bereitstellt
* ob externe Paketquellen notwendig sind
* ob mehrere Webseiten unterschiedliche PHP-Versionen brauchen

**Wichtig:** Externe Paketquellen können zusätzliche Risiken verursachen. Nutze sie nur, wenn du weißt, was du tust und die Quelle vertrauenswürdig ist.

### PHP aktualisieren

PHP wird normalerweise über den Paketmanager deines Systems aktualisiert.

Debian und Ubuntu:

`apt update`

`apt upgrade`

AlmaLinux und Rocky Linux:

`dnf update`

Halte PHP regelmäßig aktuell, da Sicherheitslücken in PHP oder Erweiterungen häufig ausgenutzt werden.

### Häufige Probleme

#### PHP-Code wird im Browser angezeigt

Wenn der PHP-Code im Browser sichtbar ist, wird PHP nicht vom Webserver verarbeitet.

Mögliche Ursachen:

* PHP ist nicht installiert
* PHP-Modul für Apache fehlt
* PHP-FPM ist nicht eingerichtet
* Nginx ist nicht für PHP konfiguriert
* Webserver wurde nach der Installation nicht neu gestartet

#### Browser lädt die PHP-Datei herunter

Wenn der Browser die Datei herunterlädt, ist der Webserver falsch konfiguriert.

Prüfe:

* PHP-FPM läuft
* Nginx leitet PHP-Dateien korrekt an PHP-FPM weiter
* Apache hat PHP-Unterstützung aktiviert
* Webserver wurde neu gestartet

#### Fehler 500 nach PHP-Installation

Ein Fehler 500 bedeutet, dass der Server die Anfrage nicht korrekt verarbeiten konnte.

Prüfe die Logs:

Apache unter Debian/Ubuntu:

`/var/log/apache2/error.log`

Apache unter AlmaLinux/Rocky Linux:

`/var/log/httpd/error_log`

Nginx:

`/var/log/nginx/error.log`

PHP-FPM Logs findest du je nach System unter:

`/var/log/php*-fpm.log`

oder im Systemjournal:

`journalctl -u php*-fpm`

#### Erweiterung fehlt

Wenn eine Anwendung eine fehlende PHP-Erweiterung meldet, installiere das passende Paket.

Beispiel:

Fehlermeldung: `Missing PHP extension: curl`

Lösung unter Debian/Ubuntu:

`apt install php-curl`

Danach Webserver oder PHP-FPM neu starten.

#### Upload ist zu klein

Wenn Uploads abbrechen oder große Dateien nicht hochgeladen werden können, prüfe diese Werte in der `php.ini`:

`upload_max_filesize`

`post_max_size`

Passe beide Werte passend an und starte danach den Webserver oder PHP-FPM neu.

#### Änderungen an php.ini werden nicht übernommen

Mögliche Ursachen:

* falsche `php.ini` bearbeitet
* Webserver nicht neu gestartet
* PHP-FPM nicht neu gestartet
* mehrere PHP-Versionen installiert

Prüfe mit:

`php --ini`

Bei Webservern kann die verwendete PHP-Konfiguration zusätzlich über eine `phpinfo()`-Datei geprüft werden.

### Sicherheit

Beachte folgende Punkte:

* PHP regelmäßig aktualisieren
* ungenutzte Erweiterungen entfernen
* `phpinfo()` nach Tests löschen
* Dateirechte korrekt setzen
* Webanwendungen aktuell halten
* Plugins und Themes regelmäßig aktualisieren
* keine unbekannten PHP-Skripte ausführen
* Upload-Verzeichnisse absichern
* Backups erstellen

### Support kontaktieren

Wenn PHP nicht korrekt funktioniert, kontaktiere den Support mit möglichst genauen Angaben.

Hilfreich sind:

* Betriebssystem
* verwendeter Webserver: Apache oder Nginx
* PHP-Version
* genaue Fehlermeldung
* betroffene Domain oder IP-Adresse
* relevante Logauszüge
* welche Befehle du bereits ausgeführt hast

**Sicherheit:** Sende niemals Passwörter, private Schlüssel oder Zugangsdaten an den Support.
