Chapitre 3.1 — PHP, Composer & Symfony CLI
Partie 3 : Installation & environnement — Chapitre 1/5 Version de référence : PHP 8.4, Composer 2, Symfony CLI pour Symfony 7.4.
⏱️ TL;DR
- Trois outils à installer : PHP 8.4 (le langage), Composer (les dépendances), la Symfony CLI (serveur local, création de projet, diagnostics).
- Vérifiez avec
php -v,composer -V,symfony version, puissymfony check:requirements(dit si votre PHP est prêt pour Symfony).- Extensions PHP indispensables :
ctype,iconv,intl,pdo(+ le driverpdo_pgsqloupdo_mysql),mbstring,openssl.- La Symfony CLI fournit un serveur de dev rapide (
symfony serve) avec HTTPS local automatique — bien plus pratique quephp -S.- Alternative « zéro install » : tout faire en Docker/FrankenPHP (chapitre 3.2). Ce chapitre couvre l’install locale, utile à connaître de toute façon.
🎯 Objectifs
- Installer PHP 8.4, Composer et la Symfony CLI sur Windows / macOS / Linux.
- Vérifier l’installation et lire
symfony check:requirements. - Activer les bonnes extensions PHP.
- Lancer un serveur de dev avec HTTPS local.
1. Vue d’ensemble : trois outils, trois rôles
- PHP : l’interpréteur. Fournit la commande
php(exécuter des scripts,bin/console, un serveur intégré). - Composer : le gestionnaire de dépendances (chapitre 2.6). Fournit
composer. - Symfony CLI : un binaire optionnel mais très recommandé (
symfony) qui simplifie tout : créer un projet, lancer un serveur de dev performant avec HTTPS, vérifier les prérequis, gérer des services (base, Mercure) en local, déployer.
💡 Pour un dev Next.js : PHP ↔ Node (le runtime + le CLI), Composer ↔ npm/pnpm, Symfony CLI ↔ un mélange de
create-next-app+next dev+ outils de diagnostic. Vous n’avez pas ce dernier en JS ; en PHP il fait gagner beaucoup de temps.
2. Installer PHP 8.4
2.1 Windows
Deux voies simples :
- Avec un gestionnaire de paquets (recommandé) — Scoop ou Chocolatey :
# Scoop scoop install php # ou Chocolatey (PowerShell administrateur) choco install php - Manuellement : télécharger le zip PHP 8.4 (Thread Safe, x64) sur windows.php.net , l’extraire (ex.
C:\php), et ajouterC:\phpauPATH.
Ensuite, activez les extensions dans le fichier php.ini (voir §4).
2.2 macOS
brew install php # installe la dernière version stable (8.4)2.3 Linux (Debian/Ubuntu)
Le dépôt de Ondřej Surý fournit les versions récentes :
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.4 php8.4-cli php8.4-intl php8.4-pgsql php8.4-mbstring php8.4-xml php8.4-curl2.4 Vérifier
php -v
# PHP 8.4.x (cli) ...⚠️ Piège : avoir plusieurs versions de PHP sur la machine (une pour un vieux projet, une récente) et se retrouver avec la mauvaise dans le
PATH. Vérifiez toujoursphp -vavant de commencer. La Symfony CLI sait, en prime, épingler une version de PHP par projet via un fichier.php-version.
3. Installer Composer
- Windows : l’installeur officiel getcomposer.org (
Composer-Setup.exe) détecte votre PHP et configure lePATH. - macOS / Linux :
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php sudo mv composer.phar /usr/local/bin/composer - macOS (Homebrew) :
brew install composer.
Vérifier :
composer -V
# Composer version 2.x.x ...4. Activer les extensions PHP indispensables
Symfony a besoin de quelques extensions. Sur Windows, on les active dans php.ini en retirant le ; devant la ligne extension=... :
; php.ini — extensions à activer
extension=ctype
extension=iconv
extension=intl ; internationalisation (dates, nombres, locales)
extension=mbstring ; chaînes multi-octets (UTF-8)
extension=openssl ; TLS, JWT, hashing
extension=pdo_pgsql ; PostgreSQL (ou pdo_mysql pour MySQL/MariaDB)
extension=curl ; HttpClient
extension=fileinfoSur macOS/Linux, Homebrew/apt installent la plupart de ces extensions avec PHP (ou en paquets séparés php8.4-intl, php8.4-pgsql…).
Vérifier ce qui est chargé :
php -m # liste tous les modules chargés
php -i | grep -i intl # détail d'une extension (Linux/macOS)⚠️ Piège Windows : après avoir modifié
php.ini, redémarrez votre terminal (et le serveur) pour recharger la config. Et vérifiez que vous éditez le bonphp.ini:php --iniaffiche le chemin réellement utilisé (il y en a parfois plusieurs).
5. Installer la Symfony CLI
- Windows :
scoop install symfony-cli # ou choco install symfony-cli - macOS / Linux :
curl -sS https://get.symfony.com/cli/installer | bash # puis suivre l'instruction pour ajouter symfony au PATH # macOS : brew install symfony-cli/tap/symfony-cli
Vérifier :
symfony version
# Symfony CLI version x.y.z ...6. Le diagnostic qui fait gagner des heures : check:requirements
La Symfony CLI sait dire si votre PHP est prêt pour Symfony :
symfony check:requirementsElle vérifie la version de PHP, les extensions, les réglages php.ini (mémoire, date.timezone…) et liste ce qui manque, avec la marche à suivre. À lancer avant de créer un projet, et chaque fois qu’un comportement bizarre pointe vers l’environnement.
7. Un serveur de dev qui vaut le coup : symfony serve
PHP a un serveur intégré (php -S localhost:8000 -t public/), mais la Symfony CLI fait bien mieux :
# dans un dossier de projet Symfony
symfony serve # démarre le serveur de dev (avec HTTPS local)
symfony serve -d # en arrière-plan (daemon)
symfony server:stop # arrêter
symfony server:log # voir les logs en directAvantages sur php -S : HTTPS local automatique, détection de la version PHP du projet, intégration avec les services (base de données, Mercure) via des variables d’environnement injectées, et de meilleures performances. Pour activer le certificat HTTPS local une bonne fois :
symfony server:ca:install # installe une autorité de certification locale de confiance💡 Pour un dev Next.js :
symfony serve↔next dev, mais avec HTTPS local prêt à l’emploi (pratique pour tester des cookiesSecure, des webhooks, du OAuth). Le port par défaut est 8000 (pas 3000). En dev « front Next.js + back Symfony », vous ferez tourner les deux :next devsur 3000,symfony servesur 8000, et Next.js appellera l’API sur 8000 (avec du CORS — Partie 11).
📚 Aller plus loin : la doc de la CLI (symfony.com/download ) détaille les services locaux, l’attachement d’une base de données, et l’usage de
symfony runpour exécuter des commandes avec le bon environnement.
✏️ Exercices
Exercice 1. Après installation, quelles trois commandes lancez-vous pour vérifier que PHP, Composer et la Symfony CLI sont opérationnels ?
✅ Solution
php -v # PHP 8.4.x attendu
composer -V # Composer 2.x
symfony version # Symfony CLI présentePuis, dans la foulée, symfony check:requirements pour valider que l’environnement PHP est prêt pour Symfony (extensions, réglages).
Exercice 2. symfony check:requirements signale que l’extension intl est manquante. Que faites-vous sous Windows ?
✅ Solution
Ouvrir le php.ini utilisé (le chemin est donné par php --ini), décommenter la ligne ;extension=intl (retirer le ;), enregistrer, puis redémarrer le terminal/serveur. Revérifier avec php -m | Select-String intl (PowerShell) ou symfony check:requirements.
Exercice 3. Pourquoi préférer symfony serve à php -S localhost:8000 -t public/ pour développer ?
✅ Solution
symfony serve offre le HTTPS local automatique (utile pour cookies Secure, OAuth, webhooks), détecte la version PHP du projet, injecte les variables d’environnement des services locaux (base, Mercure), donne des logs structurés et de meilleures performances. php -S est un serveur minimal sans ces commodités.
🧠 Quiz de révision
1. Quels sont les trois outils de base et leur rôle ?
PHP 8.4 (le langage/runtime + php), Composer (dépendances + autoload), Symfony CLI (serveur de dev, création de projet, diagnostics, services locaux).
2. Quelle commande vérifie que votre PHP est prêt pour Symfony ?
symfony check:requirements — elle liste les extensions/réglages manquants.
3. Citez trois extensions PHP requises par Symfony.
Au choix : ctype, iconv, intl, mbstring, openssl, pdo (+ pdo_pgsql/pdo_mysql), curl.
4. Quel avantage clé de symfony serve sur php -S ?
symfony serve sur php -S ?Le HTTPS local automatique (plus la détection de version PHP, l’intégration des services locaux et de meilleurs logs/perfs).
5. Sur quel port tourne le serveur Symfony par défaut, et quel port pour Next.js ?
8000 pour Symfony (symfony serve), 3000 pour Next.js (next dev). En architecture headless, les deux tournent en parallèle.
Prochain chapitre : 3.2 — Docker & FrankenPHP — les environnements conteneurisés, docker compose, FrankenPHP, et quand les préférer à l’install locale.