Symfony — CLI und bin/console für Symfony-Projekte

Praxis-Guide zu Symfony: CLI für lokalen Server und bin/console für make, Doctrine, Cache, Routing und Debugging deiner Symfony-Anwendungen.

Symfony ist eines der führenden PHP-Frameworks für Webanwendungen und APIs. Im Alltag arbeitest du mit zwei Werkzeugen: Die separate symfony-CLI (das Symfony-Binary) startet den lokalen Entwicklungsserver, legt neue Projekte an und bündelt Tooling rund um Symfony Cloud. Für alles innerhalb deiner Anwendung – Code-Generierung, Datenbank-Migrationen, Cache, Routing und Debugging – nutzt du php bin/console, die Console-Komponente des Frameworks. Dieser Guide bündelt die Kommandos, die du im Projektalltag am häufigsten brauchst.

Allgemein

php bin/console list — Listet alle verfügbaren Kommandos auf.

php bin/console list

php bin/console help <command> — Zeigt die Hilfe zu einem bestimmten Kommando.

php bin/console help make:entity

php bin/console about — Zeigt Informationen über das aktuelle Projekt.

php bin/console about

symfony serve — Startet den lokalen Symfony-Webserver.

symfony serve -d

symfony new <name> — Legt ein neues Symfony-Projekt an.

symfony new my-project --webapp

Code-Generierung (make:)

php bin/console make:entity — Erzeugt oder aktualisiert eine Doctrine-Entity-Klasse.

php bin/console make:entity Product

php bin/console make:controller — Erzeugt eine neue Controller-Klasse.

php bin/console make:controller ProductController

php bin/console make:form — Erzeugt eine neue Form-Type-Klasse.

php bin/console make:form ProductType

php bin/console make:migration — Erzeugt eine Migration auf Basis der Entity-Änderungen.

php bin/console make:migration

php bin/console make:command — Erzeugt eine neue Console-Command-Klasse.

php bin/console make:command app:send-emails

php bin/console make:subscriber — Erzeugt einen neuen Event-Subscriber.

php bin/console make:subscriber ExceptionSubscriber

php bin/console make:twig-extension — Erzeugt eine Twig-Extension.

php bin/console make:twig-extension AppExtension

php bin/console make:voter — Erzeugt einen neuen Security-Voter.

php bin/console make:voter ProductVoter

Datenbank & Doctrine

php bin/console doctrine:database:create — Legt die konfigurierte Datenbank an.

php bin/console doctrine:database:create

php bin/console doctrine:migrations:migrate — Führt ausstehende Datenbank-Migrationen aus.

php bin/console doctrine:migrations:migrate

php bin/console doctrine:migrations:status — Zeigt den Status der Migrationen.

php bin/console doctrine:migrations:status

php bin/console doctrine:schema:validate — Prüft die Mapping-Dateien und das Datenbankschema.

php bin/console doctrine:schema:validate

php bin/console doctrine:schema:update --dump-sql — Zeigt das SQL, das zum Aktualisieren des Datenbankschemas nötig ist.

php bin/console doctrine:schema:update --dump-sql

php bin/console doctrine:fixtures:load — Lädt Daten-Fixtures in die Datenbank.

php bin/console doctrine:fixtures:load --append

php bin/console dbal:run-sql '<sql>' — Führt rohes SQL direkt aus.

php bin/console dbal:run-sql 'SELECT count(*) FROM product'

Cache & Konfiguration

php bin/console cache:clear — Leert den Anwendungs-Cache.

php bin/console cache:clear

php bin/console cache:warmup — Wärmt den Cache vor.

php bin/console cache:warmup

php bin/console cache:pool:clear <pool> — Leert einen bestimmten Cache-Pool.

php bin/console cache:pool:clear cache.app

php bin/console debug:config <bundle> — Zeigt die aufgelöste Konfiguration eines Bundles.

php bin/console debug:config framework

php bin/console config:dump-reference <bundle> — Zeigt die vollständige Standard-Konfigurationsreferenz.

php bin/console config:dump-reference security

Debugging & Routen

php bin/console debug:router — Listet alle registrierten Routen auf.

php bin/console debug:router

php bin/console debug:router <name> — Zeigt Details zu einer bestimmten Route.

php bin/console debug:router app_product_show

php bin/console router:match <path> — Zeigt, welche Route zu einem URL-Pfad passt.

php bin/console router:match /product/42

php bin/console debug:container — Listet alle Services im Container auf.

php bin/console debug:container --show-arguments

php bin/console debug:container <service> — Zeigt Details zu einem bestimmten Service.

php bin/console debug:container App\Service\Mailer

php bin/console debug:event-dispatcher — Listet alle registrierten Event-Listener auf.

php bin/console debug:event-dispatcher kernel.request

php bin/console debug:twig — Zeigt Twig-Funktionen, -Filter und -Globals.

php bin/console debug:twig

Messenger & Security

php bin/console messenger:consume <transport> — Konsumiert Nachrichten aus einem Transport (Queue-Worker).

php bin/console messenger:consume async --limit=10

php bin/console messenger:failed:show — Zeigt fehlgeschlagene Nachrichten.

php bin/console messenger:failed:show

php bin/console messenger:failed:retry — Verarbeitet fehlgeschlagene Nachrichten erneut.

php bin/console messenger:failed:retry

php bin/console security:hash-password — Hasht ein Klartext-Passwort.

php bin/console security:hash-password

php bin/console secrets:set <name> — Setzt ein Secret im Vault.

php bin/console secrets:set DATABASE_PASSWORD

Fazit

Mit der symfony-CLI und bin/console hast du fast alles in der Hand, was ein Symfony-Projekt im Alltag braucht – vom lokalen Server über Code-Generierung bis zu Cache und Routing. Der lokale Server (symfony serve) ist ausschließlich für die Entwicklung gedacht; in Produktion läuft deine App hinter einem echten Webserver wie nginx oder Apache mit PHP-FPM. Vorsicht bei datenverändernden Doctrine-Kommandos: doctrine:migrations:migrate sowie doctrine:database:drop und doctrine:schema:drop können Daten unwiderruflich löschen – lege vorher ein Backup an und setze in Produktion --no-interaction nur bewusst und geprüft ein. cache:clear ist harmlos, sollte in Produktion aber im richtigen Environment laufen. Die Console ist erweiterbar: Mit make:command baust du dir eigene Kommandos im selben Stil.

Verwandte Kommandos

  • artisan – Kommandozeilen-Tool des Laravel-Frameworks
  • cargo – Paket- und Build-Manager für Rust
  • composer – Abhängigkeits-Manager für PHP