Contactez-nous

Lancer le serveur de développement local (`symfony server:start`)

Apprenez à démarrer, configurer et gérer le serveur de développement local Symfony grâce à la commande `symfony server:start`. Optimisez votre workflow.

Démarrage et options fondamentales du serveur local Symfony

La commande symfony server:start est l'un des outils les plus fréquemment utilisés du Symfony CLI. Elle est le pilier de votre environnement de développement local, vous fournissant un serveur web léger, performant et spécifiquement configuré pour exécuter votre application Symfony. Son rôle principal est de vous permettre de visualiser et d'interagir avec votre projet en temps réel, sans avoir à configurer manuellement un serveur web plus complexe comme Apache ou Nginx pour le développement.

L'utilisation la plus simple pour démarrer le serveur consiste à exécuter la commande suivante depuis le répertoire racine de votre projet Symfony :

symfony server:start

Par défaut, le serveur se lance et écoute les requêtes sur l'adresse 127.0.0.1 (localhost) et le port 8000. Une fois démarré, vous pouvez accéder à votre application en ouvrant votre navigateur web et en vous rendant à l'adresse http://127.0.0.1:8000 (ou https://127.0.0.1:8000 si le support TLS est activé). Le terminal affichera l'URL exacte à utiliser.

Il peut arriver que le port 8000 soit déjà utilisé par une autre application sur votre machine, ou que vous souhaitiez simplement utiliser un port différent pour des raisons d'organisation, notamment si vous travaillez sur plusieurs projets Symfony simultanément. Dans ce cas, vous pouvez spécifier un port d'écoute différent à l'aide de l'option --port :

symfony server:start --port=8001

Ainsi, votre application sera accessible via http://127.0.0.1:8001.

Pour une meilleure productivité, il est souvent pratique de lancer le serveur en arrière-plan, afin de libérer votre terminal pour d'autres commandes. C'est ce que l'on appelle le mode "démon". Pour cela, utilisez l'option -d (raccourci) ou --daemon :

symfony server:start -d
# Equivalent à :
symfony server:start --daemon

Le serveur démarrera silencieusement et vous pourrez continuer à utiliser votre console. C'est particulièrement utile dans des scripts d'automatisation ou simplement pour garder un environnement de travail épuré.

Interagir avec et gérer votre serveur de développement en cours d'exécution

Une fois votre serveur Symfony démarré, notamment en mode démon, vous aurez besoin d'autres commandes pour interagir avec lui. Pour visualiser les logs du serveur en temps réel, ce qui est crucial pour le débogage des requêtes HTTP, des erreurs PHP ou des messages de votre application, la commande symfony server:log est votre alliée :

symfony server:log

Cette commande affiche un flux continu des accès et des erreurs, vous permettant de suivre instantanément ce qui se passe lorsque vous interagissez avec votre application dans le navigateur.

Lorsque vous avez terminé votre session de développement ou que vous souhaitez libérer le port utilisé par le serveur, il est important de l'arrêter proprement. La commande symfony server:stop s'en charge :

symfony server:stop

Cette commande est particulièrement indispensable si le serveur a été lancé en mode démon, car fermer simplement la fenêtre du terminal ne l'arrêtera pas. Si vous êtes dans le répertoire d'un projet, elle arrêtera le serveur associé à ce projet.

Pour vérifier rapidement si un serveur de développement Symfony est en cours d'exécution pour le projet courant et sur quel port il écoute, vous pouvez utiliser la commande symfony server:status :

symfony server:status

Cela vous donnera des informations claires sur l'état du serveur, vous évitant de tenter de démarrer un serveur qui tournerait déjà ou de chercher sur quel port il est accessible.

Afin de gagner quelques secondes précieuses et d'éviter de copier-coller l'URL, le Symfony CLI propose une commande très pratique pour ouvrir directement votre projet dans le navigateur par défaut : symfony open:local ou son alias plus spécifique symfony open:local:web.

symfony open:local

Si le serveur est en cours d'exécution, cette commande ouvrira une nouvelle tabulation dans votre navigateur pointant vers la page d'accueil de votre application Symfony.

Comprendre le fonctionnement et les avantages du serveur Symfony CLI

Le serveur web intégré au Symfony CLI offre plusieurs avantages par rapport à d'autres solutions de développement locales comme le serveur interne de PHP (php -S) ou une configuration manuelle d'Apache/Nginx. Il est optimisé pour les applications Symfony, gère mieux les requêtes concurrentes grâce à l'utilisation de workers PHP-FPM (si disponible et configuré), et s'intègre nativement avec les variables d'environnement et la structure des projets Symfony. De plus, la version globale du Symfony CLI peut faciliter la gestion de différentes versions de PHP par projet, bien que cela dépende de votre installation.

Une des forces du serveur Symfony CLI est sa gestion transparente des variables d'environnement, définies dans les fichiers .env (.env, .env.local, .env.dev, .env.dev.local, etc.). Par défaut, lorsque vous lancez symfony server:start, il charge automatiquement l'environnement de développement (APP_ENV=dev) et toutes les variables associées, ce qui vous assure que votre application se comporte comme prévu en mode développement sans configuration supplémentaire.

Le serveur détecte automatiquement le répertoire public (document root) de votre application, qui est conventionnellement public/ dans les projets Symfony modernes. Cependant, si votre projet a une structure de dossiers non standard ou si vous souhaitez servir un sous-répertoire spécifique, vous pouvez utiliser l'option --docroot :

symfony server:start --docroot=mon_autre_dossier_public/

Cela permet une flexibilité pour des cas d'usage moins courants ou pour des projets plus anciens en cours de migration.

Développer et tester des fonctionnalités nécessitant un contexte sécurisé (HTTPS), comme les Progressive Web Apps (PWA), les Service Workers ou certaines API externes, est simplifié avec le Symfony CLI. En exécutant une seule fois symfony server:ca:install, vous installez une autorité de certification (CA) locale sur votre machine. Par la suite, chaque fois que vous démarrez le serveur avec symfony server:start, il tentera automatiquement de servir votre application via HTTPS (par exemple, https://127.0.0.1:8000) en utilisant un certificat généré pour votre domaine local, sans provoquer d'avertissements de sécurité dans votre navigateur. Si vous souhaitez explicitement forcer le HTTP, vous pouvez utiliser l'option --no-tls.

# A exécuter une seule fois pour installer le CA local
symfony server:ca:install

# Le serveur essaiera de démarrer en HTTPS par défaut
symfony server:start

# Pour forcer le démarrage en HTTP
symfony server:start --no-tls

Il est crucial de se rappeler que le serveur fourni par symfony server:start est exclusivement conçu et optimisé pour des besoins de développement. Il ne possède pas les fonctionnalités de sécurité, de robustesse, de scalabilité et de gestion avancée du trafic requises pour un environnement de production. Pour déployer votre application Symfony en production, vous devrez utiliser des serveurs web éprouvés tels que Nginx ou Apache, correctement configurés et sécurisés.