
PHP ist lahm?
Composer gibt PHP den Boost, um ernsthafte Projekte zu ermöglichen.
Lerne das Tool mit diesem Guide kennen.
Starten wir!
Was ist Composer?

Composer verwaltet Deine PHP-Bibliotheken, Abhängigkeiten und Fremdcode. Bei großen PHP-Projekten und APIs möchtest Du die Übersicht behalten. Composer funktioniert ähnlich wie Nuget oder NPM, um Fremdcode in die eigene Anwendung effizient einzubinden. Composer bezeichnet sich als ein Dependency Manager, welcher Abhängigkeiten von Deinem PHP Code in den Ordner Vendor installiert.
Warum Composer verwenden?
Viele Gründe sprechen für Composer:
- Übersicht behalten: Jedes PHP Projekt mit Abhängigkeiten profitiert von Composer, weil die Abhängigkeiten sortiert gelistet sind.
- Fremdcode nutzen: Es gibt noch anderen Möglichkeiten Fremdcode zu nutzen, aber Composer macht Dir es einfach.
- Schnelles updaten: Schwachstellen braucht keiner. Composer eliminiert diese schnell mit einem Update der Bibliotheken.
- Große Auswahl: Lade Dir aus 400.000 Paketen von packagist.org Deine Bibliothek herunter. packagist.org und Composer sind miteinander integriert.
- Einfache Konfiguration: Eine Datei beinhaltet alle Configs. Die Config ist im einfach lesbaren JSON geschrieben.
- Einfach zu erlernen: Die wichtigsten CLI-Befehle kannst Du in diesem Tutorial verwenden.

Wo wird Composer verwendet?
Composer kannst Du für unabhängige PHP-Skripte verwenden, für Webprojekte oder Batch-Verarbeitung. Composer ist die Grundlage für Laravel Anwendungsschnittstellen (API) und Webseiten, sowie Symfony.
Viele Apps, Webseiten und Anwendungen brauchen Anwendungsschnittstellen, um die produktiven Daten zu verwalten. Sie steuern den Zugang zu Datenbank, ändern, löschen und fügen neue Datenbankeinträge hinzu. Composer bietet einen schnellen Weg an, um Laravel und Co zu installieren und mit neuen PHP-Bibliotheken zu erweitern.
Composer installieren
Für Composer brauchen wir PHP. Die folgenden Kommandos funktionieren in Linux Distributionen direkt oder mit dem WSL 2 Ubuntu 22.04 für Windows.
#!/bin/bash
sudo apt install zip unzip php-zip php-dom -y
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
curl -fsSL https://packages.sury.org/php/apt.gpg| sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg
sudo apt update
sudo apt-get install php8.2 libapache2-mod-php8.2 php8.2-common php8.2-gd php8.2-mysql php8.2-curl php8.2-intl php8.2-xsl php8.2-mbstring php8.2-zip php8.2-bcmath php8.2-soap php-xdebug php-imagick -y
Du kannst Composer lokal oder global installieren. Die ausführbare Datei kann dabei im Projekt-Ordner liegen oder in einem System-Ordner. So lädst Du Dir Composer lokal:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Projekt anlegen und in PHP verwenden
Der erste Schritt ist es, das Projekt anzulegen. Dazu erstelle einen Ordner oder gehe zu den bestehenden PHP-Skripten. Dort führst Du das Kommando
composer update
aus. Die Software erstellt zwei Dateien composer.json
und composer.lock
. Die composer.json
enthält alle Abhängigkeiten, welche Du „aktiv“ hinzugefügt hast. Die Abhängigkeiten haben oft auch Abhängigkeiten, welche in der composer.lock
in voller Länge gelistet sind. Der neue Ordner vendor
beinhaltet allen Code, der von Abhängigkeiten stammt. composer.lock
sollte genauso in Deinem Git-Repo vorhanden sein, sodass alle Entwickler gleiche Versionen verwenden.
Start mit Composer
Abhängigkeiten kannst Du über packagist suchen und so installieren:
composer require barryvdh/laravel-dompdf
Das Kommando vermerkt die Installation in der composer.json.
Die Inhalte kannst Du mit dem Use-Befehl verwenden:
use Barryvdh\DomPDF\Facade\Pdf;
$pdf = Pdf::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');
Die Abhängigkeit findest Du im Vendor-Ordner.
Aktuell halten und updaten
Damit wir hinter den Feature- und Sicherheitsupdates hinterherkommen, können wir einfach
composer update
composer bump
composer update
ausführen, um die neueste Version zu installieren. Die composer.json
hilft das Verhalten von Composer zu steuern. Ein „^
“ vor der Version besagt, dass Versionen oberhalb der genannten Version ok sind (keine Breaking Changes). Ein „~
“ erlaubt, dass sich die Version um die letzte Minior-Version erhöhen kann und eine exakte Angabe „1.3.2
“ verbietet das Update.
Security Checks

Sicherheit ist keine automatische Angelegenheit, sondern muss mit viel Arbeit hergestellt werden. Der Composer und das PHP Framework Laravel bieten ein Modul an, welches die klassischen Sicherheitslücken sucht und findet. Ein Anfänger muss die richtigen Konfigurationen finden, während der Profi im laufenden Betrieb die Übersicht verliert. Das Tool Enlightn hilft dabei, diese Fehler zu finden. Installiere die Software mit:
composer require enlightn/enlightn
php artisan vendor:publish --tag=enlightn
Du kannst eine Pro-Version der Software kaufen, aber die Basic Variante ist im ersten Schritt ausreichend.
Die Software führt 131 Checks durch, was ca. 2 Minuten braucht. Das Tool gruppiert die Checks in Kategorien, um bei der Nacharbeit nicht die Übersicht zu verlieren.
Gehe in das Hauptverzeichnis Deines Laravel Projekts und starte die Untersuchung mit
php artisan enlightn
Die Report Card am Ende zeigt die Fehler und Kategorien auf. Bearbeite die Security und Failed immer zuerst
+----------------+-------------+-------------+-----------+-----------+
| Status | Performance | Reliability | Security | Total |
+----------------+-------------+-------------+-----------+-----------+
| Passed | 11 (61%) | 25 (89%) | 17 (81%) | 53 (79%) |
| Failed | 2 (11%) | 3 (11%) | 4 (19%) | 9 (13%) |
| Not Applicable | 5 (28%) | 0 (0%) | 0 (0%) | 5 (7%) |
| Error | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) |
+----------------+-------------+-------------+-----------+-----------+
Das Tool beschreibt jeden Fehler mit einem Text und Link. Die Webseite hinter dem Link erklärt, wie es richtig geht.
Check 63/67: Your application uses stable versions of dependencies. Failed
Your application's dependencies are unstable versions. These may include bug fixes and/or security patches. It is recommended to update to the most stable versions.
Documentation URL: https://www.laravel-enlightn.com/docs/security/stable-dependency-analyzer.html
Wichtige CLI Befehle
Hier ist Dein Spick Zettel für die wichtigsten Composer CLI Commands:
composer init | Initialisiert ein neues Composer-Projekt und erstellt eine composer.json -Datei. |
composer install | Installiert alle Abhängigkeiten, die in der composer.json -Datei definiert sind. |
composer update | Aktualisiert alle Abhängigkeiten auf ihre neuesten Versionen. |
composer require [package] | Fügt ein neues Paket zu deinem Projekt hinzu und installiert es. |
composer remove [package] | Entfernt ein Paket aus deinem Projekt. |
composer dump-autoload | Aktualisiert die Autoload-Dateien. |
composer validate | Überprüft die composer.json -Datei auf Fehler. |
composer show | Zeigt Informationen über installierte Pakete an. |
composer search [keyword] | Sucht nach Paketen auf Packagist. |
composer outdated | Zeigt veraltete Pakete an, die aktualisiert werden können. |
composer global require [package] | Installiert ein Paket global auf deinem System. |
composer global update | Aktualisiert alle global installierten Pakete. |
composer create-project [package] [directory] | Erstellt ein neues Projekt basierend auf einem Paket. |
composer self-update | Aktualisiert Composer selbst auf die neueste Version. |
composer diagnose | Überprüft die Systemkonfiguration auf mögliche Probleme. |
composer archive | Erstellt ein Archiv eines Pakets. |
composer fund | Zeigt Informationen zur Finanzierung der Abhängigkeiten an. |
composer licenses | Zeigt die Lizenzen der installierten Pakete an. |
composer run-script [script] | Führt ein benutzerdefiniertes Skript aus der composer.json -Datei aus. |
composer clear-cache | Löscht den Composer-Cache. |