Composer gebruiken via SSH: PHP dependency beheer

Composer is de standaard package manager voor PHP. Het maakt het installeren van libraries en frameworks een fluitje van een cent. Bij Theory7 ondersteunen we Composer op al onze hostingpakketten met SSH toegang. In deze handleiding leer je Composer effectief gebruiken voor je PHP projecten.

Wat is Composer?

Composer beheert dependencies voor PHP projecten. In plaats van libraries handmatig te downloaden en bijwerken, laat je Composer dit automatisch doen. Voordelen:

  • Automatische updates van dependencies
  • Dependency resolution - conflicten worden automatisch opgelost
  • Autoloading - classes worden automatisch geladen
  • Versiebeheer - exacte versies vastleggen

Populaire tools die Composer gebruiken: Laravel, Symfony, WordPress plugins, PHPUnit.

Composer beschikbaarheid checken

Op Theory7 servers is Composer meestal al geinstalleerd. Check met:

composer --version

Als Composer niet gevonden wordt:

which composer

Of probeer het volledige pad:

/usr/local/bin/composer --version

Basis Composer commandos

Nieuw project starten

Voor een nieuw project met composer.json:

composer init

Of installeer direct een framework:

composer create-project laravel/laravel mijnproject

Dependencies installeren

Als je een project kloont met bestaande composer.json:

composer install

Dit installeert alle dependencies gespecificeerd in composer.lock.

Nieuwe package toevoegen

composer require vendor/package

Voorbeeld:

composer require monolog/monolog
composer require guzzlehttp/guzzle

Development dependencies

Voor packages alleen nodig tijdens development:

composer require --dev phpunit/phpunit

Package verwijderen

composer remove vendor/package

Alles updaten

composer update

Of specifieke package:

composer update vendor/package

Composer voor productie

Geoptimaliseerde installatie

Voor productieservers:

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

Wat deze flags doen:

  • --no-dev - Skip development dependencies
  • --optimize-autoloader - Genereer geoptimaliseerde class map

Autoloader optimalisatie

Na deployment:

composer dump-autoload --optimize

Dit versnelt het laden van classes aanzienlijk.

Composer.json structuur

Een basis composer.json:

{
    "name": "mijnbedrijf/mijnproject",
    "description": "Mijn PHP project",
    "require": {
        "php": ">=8.1",
        "monolog/monolog": "^3.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Versie constraints

  • ^3.0 - Compatibel met 3.0 en hoger, maar niet 4.0
  • ~3.0 - Minimaal 3.0, maximaal 3.x
  • 3.0.* - Elke 3.0.x versie
  • >=3.0 - 3.0 of hoger
  • 3.0.5 - Exact deze versie

Composer.lock

Composer.lock legt exacte versies vast. Dit zorgt dat iedereen dezelfde versies gebruikt.

Belangrijk:

  • Commit composer.lock naar version control
  • Gebruik composer install (niet update) op productie
  • composer update alleen lokaal voor bewuste updates

Troubleshooting

Memory limit errors

COMPOSER_MEMORY_LIMIT=-1 composer install

Of pas php.ini aan:

php -d memory_limit=-1 /usr/local/bin/composer install

Timeout bij installatie

composer config --global process-timeout 600

Cache problemen

Clear de Composer cache:

composer clear-cache

Platform requirements

Als je lokale PHP versie verschilt van productie:

{
    "config": {
        "platform": {
            "php": "8.1"
        }
    }
}

Composer met shared hosting

Op shared hosting met beperkte resources:

  1. Installeer dependencies lokaal
  2. Upload vendor/ map naar server
  3. Of gebruik composer met memory limit override

Composer scripts

Automatiseer taken met scripts in composer.json:

{
    "scripts": {
        "post-install-cmd": [
            "php artisan optimize"
        ],
        "test": "phpunit"
    }
}

Run met:

composer test

Private packages

Voor private repositories:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "git@github.com:mijnbedrijf/privaat-package.git"
        }
    ]
}

Zorg dat SSH keys correct zijn geconfigureerd.

Gerelateerde artikelen

Hulp nodig?

We staan voor je klaar! Loop je ergens tegenaan of heb je vragen? Ons supportteam helpt je graag persoonlijk verder. Stuur ons een berichtje via het ticketsysteem - we reageren meestal binnen een paar uur en denken graag met je mee.