Hoofdstuk 1 van 5

PHP en zijn extensies installeren op Debian 13 voor Laravel

geverifieerd op 2 september 2026 · 4 min

Kort antwoord

Debian 13 levert PHP 8.4 in zijn officiële repository's: sudo apt install php-cli php-fpm php-mbstring php-xml php-curl php-zip php-bcmath php-intl php-mysql volstaat voor Laravel 13, zonder externe repository. Let op twee pakketten die vaak ten onrechte worden genoemd: php-json dient nergens meer toe sinds PHP 8.0, en je hebt php-mysql nodig, niet php-mysqli, want Laravel gaat via PDO.

Laravel 13 vraagt minimaal PHP 8.2 en een handvol extensies. Goed nieuws: Debian 13 “trixie” levert PHP 8.4 in zijn officiële repository’s, waardoor de externe repository Sury in het gangbare geval overbodig is.

Stappen uitgevoerd op een verse Debian 13-container, op 2 september 2026. Dit hoofdstuk hoort bij de installatie van Laravel op Debian, in het traject Webontwikkeling.

Nagaan wat je Debian zelf al biedt

Kijk eerst wat de distributie levert, voordat je ook maar één repository toevoegt:

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 is beschikbaar. Ruim voldoende voor Laravel 13, en het scheelt je een externe repository die je moet onderhouden. Welke PHP-versie bij welke Debian hoort:

Debian PHP uit de officiële repository’s Genoeg voor Laravel 13?
13 “trixie” 8.4 Ja
12 “bookworm” 8.2 Ja, precies het vereiste minimum
11 “bullseye” 7.4 Nee, externe repository nodig

PHP en de extensies installeren

Eén commando dekt de basis die Laravel vraagt, plus de databasedrivers:

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

Twee veelgebruikte extensies staan niet in die lijst, omdat ze van je architectuurkeuzes afhangen: php-redis, behandeld in het hoofdstuk over Redis, en php-gd of php-imagick voor beeldbewerking.

Controleer welke versie je hebt gekregen:

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

Kijk daarna na of alle extensies die Laravel verwacht ook echt antwoorden:

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

Op de testinstallatie geven alle zestien regels OK. Een deel van die extensies zit ingebouwd in het PHP-binary van Debian en heeft geen eigen pakket: ze duiken toch op in php -m.

Twee pakketten die vaak ten onrechte worden genoemd

php-json heeft geen bestaansreden meer

Sinds PHP 8.0 zit de JSON-extensie in het binary ingebouwd en is ze niet meer uit te schakelen. Het pakket php-json blijft in Debian bestaan als eenvoudig overgangspakket. Het installeren breekt niets, maar levert ook niets op.

php-mysqli is niet het juiste pakket

Laravel gaat via PDO, niet via mysqli. Je hebt php-mysql nodig, en dat levert er allebei. Kijk na wat PHP werkelijk ziet:

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

Staat mysql niet in die lijst, dan krijgt Laravel geen verbinding met MySQL of MariaDB, wat er ook in het bestand .env staat.

PHP instellen voor een webapplicatie

Er staan twee bestanden naast elkaar, met verschillende waarden: dat van de commandoregel en dat van de webserver. Het verkeerde aanpassen is een klassieke bron van verwarring.

bash
/etc/php/8.4/cli/php.ini    # artisan, composer, geplande taken
/etc/php/8.4/fpm/php.ini    # aanvragen die nginx of Apache bedient

De instellingen die voor een Laravel-applicatie tellen, staan in het FPM-bestand:

/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 moet boven upload_max_filesize blijven, anders wordt een upload op de maximale grootte geweigerd voordat hij de applicatie bereikt. Herlaad daarna de service, want zonder dat blijven de waarden ongewijzigd:

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

Nu PHP staat, is het installeren van Composer de volgende stap.

Een andere PHP-versie installeren met de Sury-repository

Die omweg is alleen te verdedigen als je een versie wilt die Debian niet levert: PHP 8.5 op Debian 13, of PHP 8.2 op een Debian 11. De methode is veranderd: apt-key bestaat niet meer sinds Debian 12, je moet met een aparte keyring werken.

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

Heb je meerdere versies geïnstalleerd, kies dan welke op het commando php antwoordt:

bash
sudo update-alternatives --config php
Wat een externe repository kost

Je moet hem onderhouden: bij elke Debian-upgrade nagaan of de repository meegaat, en de beveiligingsupdates apart in de gaten houden. Volstaan de officiële repository’s, blijf daar dan bij.

Veelgemaakte fouten

php-mysqli installeren in plaats van php-mysql Laravel gebruikt PDO. Zonder pdo_mysql werkt geen enkele MySQL-verbinding, wat er ook in de .env staat.
De Sury-repository toevoegen zonder noodzaak Debian 13 levert PHP 8.4 al. Een externe repository betekent extra onderhoud en een apart beveiligingsspoor.
apt-key bestaat niet meer sinds Debian 12 Tutorials die het gebruiken lopen vast. Je hebt een keyring in /etc/apt/keyrings nodig en de optie signed-by.
De verkeerde php.ini aanpassen Het bestand in cli/ en dat in fpm/ zijn twee verschillende bestanden. De instellingen die voor een webapplicatie tellen, staan in fpm/.
PHP-FPM vergeten te herladen Waarden die je in php.ini wijzigt worden pas actief na systemctl reload php8.4-fpm.
post_max_size lager dan upload_max_filesize Een upload op de maximale grootte wordt geweigerd voordat hij de applicatie bereikt.
Nieuwsbrief

Nieuwe tests, tutorials en projecten, per e-mail.

Reproduceerbare tests, geversioneerde code, gedateerde resultaten. Nooit spam.