Skip to Content

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, puis symfony check:requirements (dit si votre PHP est prêt pour Symfony).
  • Extensions PHP indispensables : ctype, iconv, intl, pdo (+ le driver pdo_pgsql ou pdo_mysql), mbstring, openssl.
  • La Symfony CLI fournit un serveur de dev rapide (symfony serve) avec HTTPS local automatique — bien plus pratique que php -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 ajouter C:\php au PATH.

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-curl

2.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 toujours php -v avant 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 le PATH.
  • 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=fileinfo

Sur 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 bon php.ini : php --ini affiche 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:requirements

Elle 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 direct

Avantages 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 servenext dev, mais avec HTTPS local prêt à l’emploi (pratique pour tester des cookies Secure, 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 dev sur 3000, symfony serve sur 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 run pour 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ésente

Puis, 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 ?

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.