Installer Symfony en 2026 : CLI, requirements, premier projet
Installer Symfony en 2026 reste une operation simple - a condition de connaitre les prerequis exacts et les bonnes pratiques. Ce guide vous accompagne de zero jusqu'a votre premier controller fonctionnel avec Symfony 7.2 et PHP 8.3.
Prerequis : ce qu'il faut avant de commencer
Avant de toucher a Symfony, assurez-vous que votre environnement de developpement remplit ces conditions. Un oubli ici et vous perdrez du temps sur des erreurs cryptiques plus tard.
PHP 8.2+ (idealement 8.3)
Symfony 7.2 exige PHP 8.2 au minimum. En pratique, installez PHP 8.3 pour beneficier de meilleures performances (le JIT est plus mature) et des dernieres fonctionnalites du langage. Verifiez votre version :
php -v
# PHP 8.3.x (cli) (built: ...)
# Extensions requises
php -m | grep -E "ctype|iconv|pcre|session|tokenizer|simplexml"
Les extensions ctype, iconv, pcre, session, tokenizer et simplexml sont indispensables. La plupart sont activees par defaut, mais verifiez quand meme - surtout sur les installations minimales de Linux.
Composer 2.x
Composer est le gestionnaire de paquets PHP. Si vous ne l'avez pas encore, l'installation tient en quelques lignes :
# Installation globale de Composer (Linux/macOS)
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# Verification
composer --version
# Composer version 2.7.x
Assurez-vous d'etre en Composer 2.x - la version 1 est trop lente et ne supporte plus certaines fonctionnalites necessaires.
La CLI Symfony (optionnelle mais recommandee)
La CLI officielle Symfony simplifie enormement le workflow quotidien. Elle offre un serveur local avec TLS, la verification des prerequis et l'audit de securite :
# Installation sur Linux/macOS
curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | sudo -E bash
sudo apt install symfony-cli
# Ou via brew
brew install symfony-cli/tap/symfony-cli
# Installation sur Windows (Scoop)
scoop install symfony-cli
# Verification
symfony version
Pour approfondir toutes les commandes disponibles, consultez notre cheatsheet complete de la CLI Symfony.
Methode 1 : installation via la CLI Symfony
C'est la methode recommandee. La CLI Symfony verifie automatiquement vos prerequis et cree un projet propre.
Verifier les prerequis
symfony check:requirements
# Resultat attendu :
# Your system is ready to run Symfony projects
# Optional recommendations to improve your setup:
# * Install the "intl" extension for better internationalization support
Cette commande identifie les extensions manquantes et les parametres PHP a ajuster. Corrigez tous les problemes obligatoires avant de continuer - les recommandations optionnelles peuvent attendre.
Creer un projet webapp
# Projet web complet (Twig, Doctrine, Security, Mailer...)
symfony new mon-site --webapp
# Projet API/microservice (minimum)
symfony new mon-api
L'option --webapp installe le meta-paquet symfony/webapp-pack qui inclut tout ce qu'il faut pour un site web : Twig, Doctrine ORM, le composant Security, le Mailer, l'Asset Mapper et le Web Profiler. Sans cette option, vous obtenez le skeleton minimal.
Methode 2 : installation via Composer
Si vous preferez ne pas installer la CLI Symfony, Composer suffit :
# Webapp complet
composer create-project symfony/skeleton:"7.2.*" mon-site
cd mon-site
composer require webapp
# Ou en une seule commande pour le skeleton
composer create-project symfony/skeleton:"7.2.*" mon-api
Le resultat est strictement identique. La seule difference : vous ne beneficiez pas du serveur local TLS integre ni des commandes utilitaires de la CLI.
Structure du projet : comprendre l'arborescence
Une fois le projet cree, voici les repertoires cles que vous devez connaitre :
mon-site/
+-- bin/
| +-- console # CLI Symfony (php bin/console)
+-- config/
| +-- packages/ # Configuration des bundles
| +-- routes/ # Definition des routes
| +-- bundles.php # Bundles actifs
| +-- services.yaml # Injection de dependances
+-- migrations/ # Migrations Doctrine
+-- public/
| +-- index.php # Front controller (point d'entree)
+-- src/
| +-- Controller/ # Vos controllers
| +-- Entity/ # Entites Doctrine
| +-- Repository/ # Repositories Doctrine
| +-- Kernel.php # Kernel de l'application
+-- templates/ # Templates Twig
+-- var/
| +-- cache/ # Cache applicatif
| +-- log/ # Logs
+-- vendor/ # Dependances Composer
+-- .env # Variables d'environnement
Les fichiers que vous editerez le plus souvent sont dans src/, config/ et templates/. Le repertoire var/ est auto-genere - ne le commitez jamais dans Git.
Premier controller et premiere route
Creeons votre premier controller pour verifier que tout fonctionne. Symfony utilise le MakerBundle pour generer le code :
# Generer un controller
php bin/console make:controller HomeController
# Resultat :
# created: src/Controller/HomeController.php
# created: templates/home/index.html.twig
Le controller genere ressemble a ceci :
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class HomeController extends AbstractController
{
#[Route('/', name: 'app_home')]
public function index(): Response
{
return $this->render('home/index.html.twig', [
'title' => 'Bienvenue sur mon site',
'year' => date('Y'),
]);
}
}
Depuis Symfony 6.1, les routes se definissent avec des attributs PHP 8 directement sur les methodes du controller. Fini les annotations Doctrine ou les fichiers YAML - c'est plus lisible et plus type.
Le template Twig associe
{# templates/home/index.html.twig #}
{% extends 'base.html.twig' %}
{% block title %}{{ title }}{% endblock %}
{% block body %}
<h1>{{ title }}</h1>
<p>Symfony fonctionne parfaitement en {{ year }}.</p>
{% endblock %}
Lancer le serveur de developpement
Avec la CLI Symfony, une seule commande suffit pour demarrer un serveur local avec support TLS :
# Serveur avec HTTPS automatique
symfony serve
# Ou en arriere-plan
symfony serve -d
# Resultat :
# [OK] Web server listening
# The Web server is using TLS automatically.
# https://127.0.0.1:8000
Ouvrez https://127.0.0.1:8000 dans votre navigateur. Vous devriez voir votre page d'accueil avec la barre du Web Profiler en bas. Cette barre affiche les requetes SQL, le temps de rendu, la memoire utilisee et bien plus.
Si vous n'avez pas la CLI Symfony, le serveur PHP integre fonctionne aussi :
# Alternative sans la CLI Symfony (pas de TLS)
php -S 127.0.0.1:8000 -t public/
Configurer la base de donnees
Pour la plupart des projets web, vous aurez besoin d'une base de donnees. Editez le fichier .env :
# .env
# PostgreSQL (recommande)
DATABASE_URL="postgresql://user:password@127.0.0.1:5432/mon_site?serverVersion=16&charset=utf8"
# Ou MySQL/MariaDB
DATABASE_URL="mysql://user:password@127.0.0.1:3306/mon_site?serverVersion=8.0&charset=utf8mb4"
Puis creez la base :
php bin/console doctrine:database:create
# Created database "mon_site" for connection named default
Si vous envisagez un deploiement containerise, notre guide sur Docker pour Symfony en production couvre la configuration complete avec PostgreSQL.
Les commandes essentielles pour demarrer
Voici les commandes que vous utiliserez quotidiennement avec un projet Symfony fraichement installe :
# Lister toutes les commandes disponibles
php bin/console list
# Verifier les routes enregistrees
php bin/console debug:router
# Verifier les services du container
php bin/console debug:container --show-private
# Vider le cache
php bin/console cache:clear
# Creer une entite Doctrine
php bin/console make:entity Product
# Generer une migration
php bin/console make:migration
# Executer les migrations
php bin/console doctrine:migrations:migrate
Skeleton vs Webapp : comment choisir
Le choix entre les deux templates de projet depend de votre cas d'usage :
- Webapp : site web avec interface utilisateur, back-office, authentification, base de donnees. C'est le choix par defaut pour 80% des projets.
- Skeleton : API REST pure, microservice, worker de queue, application console. Vous ajoutez uniquement les composants necessaires.
L'avantage du skeleton est sa legerete - moins de dependances, moins de configuration, demarrage plus rapide. Mais si vous finissez par ajouter Twig, Doctrine et Security manuellement, vous auriez gagne du temps avec --webapp.
Resoudre les problemes courants
Erreur "requirements not met"
Si symfony check:requirements echoue, les coupables habituels sont les extensions PHP manquantes. Sur Ubuntu/Debian :
sudo apt install php8.3-intl php8.3-mbstring php8.3-xml php8.3-curl php8.3-pgsql
Erreur de permissions sur var/
Symfony ecrit dans var/cache/ et var/log/. Si vous avez des erreurs de permission :
# Solution rapide (developpement uniquement)
chmod -R 777 var/
# Solution propre (ACL)
setfacl -R -m u:www-data:rwX var/
setfacl -dR -m u:www-data:rwX var/
Composer memory limit
# Si Composer manque de memoire
COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/skeleton mon-site
Et ensuite ?
Votre projet Symfony est installe et fonctionnel. Pour la suite, je vous recommande d'explorer dans cet ordre :
- Les differences entre Symfony et Laravel si vous hesitez encore entre les deux frameworks
- Le systeme de routing avance pour structurer vos URLs
- Doctrine ORM pour modeliser vos donnees
- Le composant Security pour l'authentification
Si vous avez un projet web a lancer et que vous preferez deleguer le developpement a un professionnel, contactez-moi pour en discuter. En tant que developpeur freelance base a Metz et Strasbourg, j'accompagne des entreprises en France et en Belgique sur des projets Symfony de toutes tailles. Vous pouvez consulter mes tarifs et decouvrir l'ensemble de mes services de developpement d'applications web.
