Kapitel 1 von 5

PHP und seine Erweiterungen für Laravel auf Debian 13 installieren

geprüft am 2 September 2026 · 4 Min.

Schnelle Antwort

Debian 13 liefert PHP 8.4 in seinen offiziellen Paketquellen: sudo apt install php-cli php-fpm php-mbstring php-xml php-curl php-zip php-bcmath php-intl php-mysql genügt für Laravel 13, ganz ohne Fremdrepository. Achtung bei zwei Paketen, die oft zu Unrecht genannt werden: php-json hat seit PHP 8.0 keinen Zweck mehr, und gebraucht wird php-mysql, nicht php-mysqli, weil Laravel über PDO geht.

Laravel 13 verlangt mindestens PHP 8.2 und eine Handvoll Erweiterungen. Die gute Nachricht: Debian 13 „trixie“ liefert PHP 8.4 in seinen offiziellen Paketquellen, womit das Fremdrepository Sury im Normalfall überflüssig wird.

Die Schritte wurden am 2. September 2026 in einem frischen Debian-13-Container ausgeführt. Dieses Kapitel gehört zur Installation von Laravel auf Debian, im Lernpfad Webentwicklung.

Prüfen, was dein Debian anbietet

Bevor du irgendein Repository hinzufügst, sieh nach, was die Distribution mitbringt:

bash
sudo apt update
apt-cache policy php-cli
code
php-cli:
  Installed: (none)
  Candidate: 2:8.4+96
  Version table:
     2:8.4+96 500
        500 http://deb.debian.org/debian trixie/main arm64 Packages

PHP 8.4 ist verfügbar. Für Laravel 13 ist das mehr als genug, und es erspart dir ein externes Repository, das gepflegt werden will. Die Zuordnung von Debian-Version zu mitgelieferter PHP-Version:

Debian PHP aus den offiziellen Paketquellen Reicht für Laravel 13?
13 „trixie“ 8.4 ja
12 „bookworm“ 8.2 ja, genau das Minimum
11 „bullseye“ 7.4 nein, Fremdrepository nötig

PHP und die Erweiterungen installieren

Ein einziger Befehl deckt den von Laravel verlangten Unterbau ab, dazu die Datenbanktreiber:

bash
sudo apt install -y php-cli php-fpm \
  php-mbstring php-xml php-curl php-zip \
  php-bcmath php-intl \
  php-mysql php-sqlite3 \
  unzip curl ca-certificates

Zwei verbreitete Erweiterungen fehlen in dieser Liste, weil sie von deinen Architekturentscheidungen abhängen: php-redis, behandelt im Kapitel zu Redis, sowie php-gd oder php-imagick für die Bildverarbeitung.

Prüf die erhaltene Version:

bash
php -v
code
PHP 8.4.24 (cli) (built: Jul 31 2026 05:11:11) (NTS)

Kontrollier anschließend, dass alle von Laravel erwarteten Erweiterungen zur Stelle sind:

bash
for e in ctype curl dom fileinfo filter hash mbstring openssl \
         pcre pdo session tokenizer xml bcmath intl zip; do
  printf "%-10s %s\n" "$e" "$(php -m | grep -qix "$e" && echo OK || echo MANQUANT)"
done

Auf der Testinstallation melden alle sechzehn Zeilen OK. Mehrere dieser Erweiterungen sind fest in die PHP-Binärdatei von Debian einkompiliert und haben kein eigenes Paket: In php -m tauchen sie trotzdem auf.

Zwei Pakete, die oft zu Unrecht genannt werden

php-json hat keinen Zweck mehr

Seit PHP 8.0 ist die JSON-Erweiterung in die Binärdatei einkompiliert und lässt sich nicht mehr abschalten. Das Paket php-json existiert in Debian nur noch als Übergangspaket. Es zu installieren zerstört nichts, bringt aber auch nichts.

php-mysqli ist das falsche Paket

Laravel geht über PDO, nicht über mysqli. Gebraucht wird php-mysql, und das liefert beides. Prüf nach, was PHP tatsächlich sieht:

bash
php -r 'echo implode(", ", PDO::getAvailableDrivers()), PHP_EOL;'
code
mysql, sqlite

Fehlt mysql in dieser Liste, kommt Laravel nicht an MySQL oder MariaDB heran, ganz gleich, was in der Datei .env steht.

PHP für eine Webanwendung einstellen

Es liegen zwei Dateien nebeneinander, mit unterschiedlichen Werten: die der Kommandozeile und die des Webservers. Die falsche zu bearbeiten ist eine klassische Verwechslung.

bash
/etc/php/8.4/cli/php.ini    # artisan, composer, geplante Aufgaben
/etc/php/8.4/fpm/php.ini    # von nginx oder Apache ausgelieferte Anfragen

Die Einstellungen, auf die es bei einer Laravel-Anwendung ankommt, stehen in der FPM-Datei:

/etc/php/8.4/fpm/php.ini
memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 21M
max_execution_time = 60

post_max_size muss über upload_max_filesize liegen, sonst wird ein Upload in maximaler Größe abgewiesen, bevor er die Anwendung erreicht. Lad danach den Dienst neu, sonst bleiben die Werte unverändert:

bash
sudo systemctl reload php8.4-fpm
php -i | grep memory_limit          # CLI-Wert
sudo -u www-data php-fpm8.4 -i | grep memory_limit

PHP steht, der nächste Schritt ist die Installation von Composer.

Eine andere PHP-Version über das Sury-Repository installieren

Dieser Umweg lohnt sich nur, wenn du eine Version brauchst, die Debian nicht liefert: PHP 8.5 auf Debian 13 oder PHP 8.2 auf einem Debian 11. Die Methode hat sich geändert: apt-key ist seit Debian 12 abgeschafft, es braucht einen eigenen Schlüsselbund.

bash
sudo apt install -y curl ca-certificates
sudo curl -fsSLo /etc/apt/keyrings/php.gpg https://packages.sury.org/php/apt.gpg

echo "deb [signed-by=/etc/apt/keyrings/php.gpg] https://packages.sury.org/php/ $(. /etc/os-release && echo $VERSION_CODENAME) main" \
  | sudo tee /etc/apt/sources.list.d/php.list

sudo apt update
sudo apt install -y php8.5-cli php8.5-fpm php8.5-mbstring php8.5-xml php8.5-curl php8.5-zip php8.5-bcmath php8.5-intl php8.5-mysql

Sind mehrere Versionen installiert, leg fest, welche auf den Befehl php antwortet:

bash
sudo update-alternatives --config php
Was ein Fremdrepository kostet

Du musst es pflegen: bei jedem Versionssprung von Debian prüfen, ob das Repository mitzieht, und die Sicherheitsupdates gesondert im Auge behalten. Reichen die offiziellen Paketquellen, dann bleib dabei.

Häufige Fehler

php-mysqli statt php-mysql installieren Laravel nutzt PDO. Ohne pdo_mysql kommt keine MySQL-Verbindung zustande, ganz gleich, was in der .env steht.
Das Sury-Repository ohne Not hinzufügen Debian 13 liefert PHP 8.4 bereits mit. Ein Fremdrepository bedeutet zusätzliche Pflege und ein eigenes Auge auf die Sicherheitsupdates.
apt-key ist seit Debian 12 abgeschafft Tutorials, die es verwenden, scheitern. Nötig sind ein Schlüsselbund in /etc/apt/keyrings und die Option signed-by.
Die falsche php.ini bearbeiten Die Datei unter cli/ und die unter fpm/ sind verschieden. Für eine Webanwendung zählen die Werte unter fpm/.
PHP-FPM nicht neu laden Geänderte Werte in der php.ini greifen erst nach systemctl reload php8.4-fpm.
post_max_size kleiner als upload_max_filesize Ein Upload in maximaler Größe wird abgewiesen, bevor er die Anwendung erreicht.
Newsletter

Neue Tests, Tutorials und Projekte, per E-Mail.

Reproduzierbare Tests, versionierter Code, datierte Ergebnisse. Niemals Spam.