Composer über SSH nutzen: PHP-Abhängigkeitsverwaltung

Composer ist der Standard-Paketmanager für PHP. Es macht die Installation von Bibliotheken und Frameworks zum Kinderspiel. Bei Theory7 unterstützen wir Composer auf all unseren Hosting-Paketen mit SSH-Zugang. In dieser Anleitung lernen Sie, Composer effektiv für Ihre PHP-Projekte zu nutzen.

Was ist Composer?

Composer verwaltet Abhängigkeiten für PHP-Projekte. Anstatt Bibliotheken manuell herunterzuladen und zu aktualisieren, lässt man Composer dies automatisch erledigen. Vorteile:

  • Automatische Updates von Abhängigkeiten
  • Abhängigkeitsauflösung - Konflikte werden automatisch gelöst
  • Autoloading - Klassen werden automatisch geladen
  • Versionskontrolle - genaue Versionen festlegen

Beliebte Tools, die Composer verwenden: Laravel, Symfony, WordPress-Plugins, PHPUnit.

Composer-Verfügbarkeit prüfen

Auf Theory7-Servern ist Composer in der Regel bereits installiert. Prüfen Sie mit:

composer --version

Falls Composer nicht gefunden wird:

which composer

Oder versuchen Sie den vollständigen Pfad:

/usr/local/bin/composer --version

Basis Composer-Befehle

Neues Projekt starten

Für ein neues Projekt mit composer.json:

composer init

Oder installieren Sie direkt ein Framework:

composer create-project laravel/laravel meinprojekt

Abhängigkeiten installieren

Wenn Sie ein Projekt mit bestehender composer.json klonen:

composer install

Dies installiert alle in composer.lock angegebenen Abhängigkeiten.

Neues Paket hinzufügen

composer require vendor/package

Beispiel:

composer require monolog/monolog
composer require guzzlehttp/guzzle

Entwicklungsabhängigkeiten

Für Pakete, die nur während der Entwicklung benötigt werden:

composer require --dev phpunit/phpunit

Paket entfernen

composer remove vendor/package

Alles aktualisieren

composer update

Oder spezifisches Paket:

composer update vendor/package

Composer für die Produktion

Optimierte Installation

Für Produktionsserver:

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

Was diese Flags tun:

  • --no-dev - Entwicklungsabhängigkeiten überspringen
  • --optimize-autoloader - Optimierte Klassenkarte generieren

Autoloader-Optimierung

Nach der Bereitstellung:

composer dump-autoload --optimize

Dies beschleunigt das Laden von Klassen erheblich.

Composer.json-Struktur

Eine Basis composer.json:

{
    "name": "meinunternehmen/meinprojekt",
    "description": "Mein PHP-Projekt",
    "require": {
        "php": ">=8.1",
        "monolog/monolog": "^3.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Versionsbeschränkungen

  • ^3.0 - Kompatibel mit 3.0 und höher, aber nicht 4.0
  • ~3.0 - Mindestens 3.0, maximal 3.x
  • 3.0.* - Jede 3.0.x-Version
  • >=3.0 - 3.0 oder höher
  • 3.0.5 - Genau diese Version

Composer.lock

Composer.lock legt genaue Versionen fest. Dies sorgt dafür, dass jeder die gleichen Versionen verwendet.

Wichtig:

  • Committen Sie composer.lock in die Versionskontrolle
  • Verwenden Sie composer install (nicht update) in der Produktion
  • composer update nur lokal für bewusste Updates

Fehlerbehebung

Speicherlimit-Fehler

COMPOSER_MEMORY_LIMIT=-1 composer install

Oder passen Sie php.ini an:

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

Timeout bei Installation

composer config --global process-timeout 600

Cache-Probleme

Leeren Sie den Composer-Cache:

composer clear-cache

Plattformanforderungen

Wenn Ihre lokale PHP-Version von der Produktionsversion abweicht:

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

Composer mit Shared Hosting

Auf Shared Hosting mit begrenzten Ressourcen:

  1. Installieren Sie Abhängigkeiten lokal
  2. Laden Sie den vendor/-Ordner auf den Server hoch
  3. Oder verwenden Sie composer mit Speicherlimit-Override

Composer-Skripte

Automatisieren Sie Aufgaben mit Skripten in composer.json:

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

Führen Sie aus mit:

composer test

Private Pakete

Für private Repositories:

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

Stellen Sie sicher, dass SSH-Schlüssel korrekt konfiguriert sind.

Verwandte Artikel

Brauchen Sie Hilfe?

Wir sind für Sie da! Stoßen Sie auf Probleme oder haben Sie Fragen? Unser Support-Team hilft Ihnen gerne persönlich weiter. Senden Sie uns eine Nachricht über das Ticketsystem - wir antworten in der Regel innerhalb weniger Stunden und denken gerne mit Ihnen mit.