Composer is de standaard package manager voor PHP en onmisbaar voor elk Laravel project. Via SSH kun je Composer commando's direct uitvoeren op je hosting om packages te installeren, updaten en beheren. In deze handleiding leer je alles over het effectief gebruik van Composer via SSH voor je Laravel applicaties.

Wat is Composer en waarom heb je het nodig?

Composer is een dependency manager die automatisch alle benodigde PHP libraries voor je project beheert. Het houdt bij welke packages je nodig hebt en installeert deze in de juiste versies. Laravel zelf wordt ook via Composer geïnstalleerd en bijgewerkt. Dit maakt Composer een essentieel hulpmiddel voor elke Laravel ontwikkelaar.

De belangrijkste voordelen van Composer:

  • Automatisch beheer van al je project dependencies, wat betekent dat je je geen zorgen hoeft te maken over het handmatig bijhouden van versies.
  • Versiecontrole zodat packages compatibel blijven, waardoor je project stabieler en betrouwbaarder wordt.
  • Eenvoudig updaten van bibliotheken met een commando, wat je tijd en moeite bespaart.
  • Autoloading van PHP classes zonder handmatige includes, wat je code schoner en gemakkelijker te onderhouden maakt.
  • Toegang tot duizenden packages via Packagist.org, waardoor je snel functionaliteit kunt toevoegen aan je project.

SSH toegang activeren voor je hosting

Voordat je Composer kunt gebruiken, heb je SSH toegang nodig. Bij Theory7 activeer je dit eenvoudig via DirectAdmin onder de SSH opties. Na activatie verbind je met een SSH client. Dit is een cruciale stap, omdat SSH je in staat stelt om veilig en efficiënt commando's op je server uit te voeren.

Op Windows gebruik je PuTTY, op Mac of Linux de ingebouwde Terminal:

ssh gebruikersnaam@jouwdomein.nl

Vergeet niet je gebruikersnaam en domeinnaam aan te passen. Eenmaal verbonden, heb je toegang tot de commandoregel van je server, waar je Composer kunt gebruiken.

Composer beschikbaarheid checken

Op Theory7 hosting is Composer meestal al geïnstalleerd. Controleer dit met:

composer --version

Je ziet dan de geïnstalleerde versie. Is Composer niet beschikbaar, installeer het dan lokaal in je home directory. Dit kan meestal door een paar eenvoudige commando's uit te voeren, afhankelijk van je serverconfiguratie.

Essentiële Composer commando's voor Laravel

Dependencies installeren

Na het clonen van een Laravel project installeer je alle packages:

composer install

Voor productieomgevingen gebruik je extra flags voor betere performance:

composer install --no-dev --optimize-autoloader

Het gebruik van de --no-dev flag zorgt ervoor dat alleen de noodzakelijke packages voor productie worden geïnstalleerd, wat de laadtijd van je applicatie kan verbeteren.

Nieuwe packages toevoegen

Voeg een package toe aan je project:

composer require vendor/package-naam

Bijvoorbeeld, als je laravel/sanctum wilt toevoegen voor API-authenticatie, gebruik je:

composer require laravel/sanctum

Packages updaten

Update alle packages naar de nieuwste compatibele versies:

composer update

Dit commando is handig om ervoor te zorgen dat je altijd de laatste beveiligingsupdates en features hebt. Houd er echter rekening mee dat dit ook kan leiden tot compatibiliteitsproblemen, dus test je applicatie altijd na een update.

Autoloader regenereren

Na handmatige wijzigingen in je classmap:

composer dump-autoload

Dit is vooral nuttig als je nieuwe classes hebt toegevoegd of bestaande classes hebt verplaatst.

Populaire Laravel packages

Enkele veelgebruikte packages die je via Composer installeert:

  • laravel/sanctum - API authenticatie tokens, ideaal voor SPA's en mobiele applicaties.
  • spatie/laravel-permission - Rollen en permissies systeem, wat je helpt om gebruikersrechten effectief te beheren.
  • intervention/image - Afbeeldingen bewerken en resizen, een must-have voor elke applicatie die met media werkt.
  • barryvdh/laravel-debugbar - Debug informatie tijdens development, wat je helpt om problemen snel op te sporen.
  • laravel/horizon - Queue monitoring dashboard, ideaal voor het beheren van je achtergrondtaken.

Veelvoorkomende problemen oplossen

Memory limit errors

Bij grote projecten kan Composer tegen geheugenlimieten aanlopen. Verhoog tijdelijk het limiet:

COMPOSER_MEMORY_LIMIT=-1 composer install

Dit commando stelt het geheugenlimiet in op onbeperkt, wat nuttig kan zijn voor grote installaties of updates.

Timeout bij grote packages

Verhoog de timeout voor langzame downloads:

composer config --global process-timeout 600

Dit kan helpen als je werkt met een trage internetverbinding of als de server traag reageert.

Cache problemen

Leeg de Composer cache bij vreemde fouten:

composer clear-cache

Dit kan helpen om problemen op te lossen die voortkomen uit verouderde of corrupte cachebestanden.

Best practices voor Composer

  • Commit altijd composer.lock naar je Git repository. Dit zorgt ervoor dat iedereen in je team dezelfde versies gebruikt, wat compatibiliteitsproblemen voorkomt.
  • Gebruik install op productie, nooit update. Dit voorkomt onverwachte breuken door nieuwe versies.
  • Check regelmatig op updates met composer outdated. Dit helpt je om je project up-to-date te houden.
  • Specificeer versie constraints in composer.json. Dit zorgt ervoor dat je niet per ongeluk naar een onverenigbare versie upgrade.
  • Gebruik --no-dev flag op productieservers. Dit vermindert de belasting en verhoogt de veiligheid.

Composer.json versus composer.lock

Het verschil tussen deze twee bestanden is belangrijk:

  • composer.json - Definieert welke packages je wilt en welke versie ranges acceptabel zijn. Dit bestand is de basis voor je projectconfiguratie.
  • composer.lock - Bevat de exacte versies die geïnstalleerd zijn. Dit bestand zorgt ervoor dat je project consistent blijft, ongeacht waar het wordt geïnstalleerd.

Door composer.lock te committen, weet je zeker dat iedereen in je team dezelfde versies gebruikt, wat cruciaal is voor samenwerking en projectconsistentie.

Met deze kennis beheer je efficiënt alle packages voor je Laravel projecten via SSH. Hulp nodig bij je Laravel hosting? Het team van Theory7 staat voor je klaar om je te ondersteunen bij al je vragen en uitdagingen.