Hoofdstuk 2 van 5

Composer installeren op Debian 13, met signatuurcontrole

geverifieerd op 2 september 2026 · 3 min

Kort antwoord

Download het installatieprogramma, vergelijk de SHA-384-vingerafdruk met die op composer.github.io/installer.sig, en voer het alleen uit als beide overeenkomen. Installeer hem in /usr/local/bin/composer zodat alle gebruikers hem hebben. Gebruik daarna nooit sudo composer install: draai Composer met het account dat eigenaar van het project is.

Composer installeert Laravel en al zijn dependencies. Op Debian is de vraag niet alleen hoe je hem installeert, maar hoe je dat doet zonder een gedownload script blind uit te voeren: de officiële procedure controleert de vingerafdruk van het installatieprogramma voordat je het start.

Stappen uitgevoerd op Debian 13 “trixie” op 2 september 2026, met PHP 8.4.24. Dit hoofdstuk hoort bij de installatie van Laravel op Debian, in het traject Webontwikkeling.

Wat je vooraf nodig hebt

Composer is een PHP-programma: je hebt eerst PHP op de commandoregel nodig.

bash
php -v
sudo apt install -y php-cli unzip curl ca-certificates

unzip is geen versiering: zonder dat pakket pakt Composer de archieven in PHP uit, en dat gaat veel trager.

Composer installeren met signatuurcontrole

Vier commando’s, in deze volgorde. Het derde is het commando dat telt: het vergelijkt de vingerafdruk van het gedownloade bestand met die van het project.

bash
# 1. de referentievingerafdruk, gepubliceerd door het Composer-project
EXPECTED="$(curl -sS https://composer.github.io/installer.sig)"

# 2. het installatieprogramma
curl -sS https://getcomposer.org/installer -o composer-setup.php

# 3. de vingerafdruk van het ontvangen bestand
ACTUAL="$(php -r 'echo hash_file("sha384", "composer-setup.php");')"

# 4. we starten niets als de twee verschillen
if [ "$EXPECTED" = "$ACTUAL" ]; then
    sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
    rm composer-setup.php
else
    >&2 echo "Signature invalide : téléchargement corrompu ou altéré."
    rm composer-setup.php
    exit 1
fi

Op de testinstallatie komen beide vingerafdrukken overeen:

code
attendue : c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
obtenue  : c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
→ signature valide
Waarom deze stap niet optioneel is

Zonder die controle voer je met sudo-rechten een PHP-script uit dat je van het netwerk hebt gehaald, zonder enige garantie over de inhoud. Daarom publiceert de officiële documentatie een referentievingerafdruk. Tutorials die curl en daarna php composer-setup.php aan elkaar plakken zonder te vergelijken, slaan de enige beschikbare bescherming over.

Controleer het resultaat:

bash
composer --version
code
Composer version 2.10.3 2026-08-27 13:34:23
PHP version 8.4.24 (/usr/bin/php8.4)

Door hem in /usr/local/bin onder de naam composer te zetten, is het commando voor alle gebruikers van de server beschikbaar, zonder aan PATH te sleutelen.

En het Debian-pakket dan?

Debian levert een pakket composer. Dat werkt, maar het volgt het ritme van de distributie: de versie uit de repository loopt vrijwel altijd achter op de actuele versie. Omdat Composer zichzelf met één commando bijwerkt, blijft de handmatige installatie op een applicatieserver de betere keuze.

bash
sudo composer self-update          # laatste stabiele versie
sudo composer self-update --rollback   # terug naar de vorige

Composer niet als root draaien

Het binary met sudo installeren is normaal. Het met sudo gebruiken niet.

bash
# te vermijden
sudo composer install

# correct: de gebruiker die eigenaar van het project is
su - deploy
cd /var/www/mon-projet
composer install --no-dev --optimize-autoloader

Op een macOS-machine speelt het probleem anders en komt het er vaak op neer dat het commando laravel niet gevonden wordt.

Twee redenen. De post-install-scripts van de dependencies draaien met de rechten die jij ze geeft, waardoor sudo composer install neerkomt op het uitvoeren van code van derden als root. En de aangemaakte bestanden zijn dan eigendom van root, wat schrijffouten oplevert zodra de webserver in storage/ probeert te schrijven.

Composer waarschuwt trouwens zelf wanneer hij als root wordt gestart zonder COMPOSER_ALLOW_SUPERUSER.

Handige opties in productie

bash
composer install --no-dev --optimize-autoloader --no-interaction
Optie Effect
--no-dev slaat de ontwikkeldependencies over (tests, debugtools)
--optimize-autoloader genereert een statische klassentabel, sneller bij het laden
--no-interaction stelt geen enkele vraag, onmisbaar bij geautomatiseerde deployments

Zet het bestand composer.lock altijd mee in de deployment, en draai composer install en niet composer update: het eerste commando installeert precies de versies uit de lock, het tweede rekent ze opnieuw uit en kan midden in een release ongeteste wijzigingen binnenhalen.

Veelgemaakte fouten

De installer draaien zonder de signatuur te controleren Je start met sudo een PHP-script dat van het netwerk komt, zonder garantie over de inhoud. De vergelijking van vingerafdrukken is de enige beschikbare bescherming.
sudo composer install De post-install-scripts van de dependencies draaien als root, en de aangemaakte bestanden zijn eigendom van root, waardoor de webserver er daarna niet meer in kan schrijven.
composer update in productie Berekent de versies opnieuw en kan ongeteste wijzigingen binnenhalen. Bij een deployment draai je composer install op basis van de composer.lock.
unzip vergeten Composer pakt de archieven dan in PHP uit, een stuk trager.
Vertrouwen op het Debian-pakket Het werkt, maar het loopt achter op de actuele versie, terwijl Composer zichzelf bijwerkt met self-update.
Nieuwsbrief

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

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