13. Annexes
13.1. Installation de PHP
Les exemples et l'étude de cas demandent [PHP] 8.4 ou une version plus récente ([Symfony] 8 l'exige), avec les extensions [intl] (la mise en forme des nombres et des dates, exemple 16, et les messages ICU, exemple 22), [pdo_mysql] (l'accès à [MySQL], exemple 28 et étude de cas), [mbstring] et [openssl]. Ils ont été testés avec la version 8.4.
Sous [Windows], le plus simple est [Laragon] (laragon.org), qui installe en une fois [PHP], [Composer], un serveur [MySQL] et l'outil d'administration [HeidiSQL]. Si la version de [PHP] fournie est antérieure à 8.4, on en télécharge une plus récente sur windows.php.net/download (version Thread Safe, archive [.zip]), que l'on décompresse dans le dossier [bin\php] de [Laragon] ; le menu PHP / Version de [Laragon] permet alors de la choisir. Le menu PHP / Extensions active une extension d'un clic ([intl], [pdo_mysql]). Le terminal de [Laragon] (bouton Terminal) connaît les commandes [php], [composer] et [mysql].
Sans [Laragon], on décompresse l'archive de [PHP] dans un dossier ([C:\php]), on ajoute ce dossier à la variable d'environnement [Path], puis on crée le fichier de configuration [php.ini] en copiant [php.ini-development], et l'on y retire le point-virgule qui commente les lignes des extensions nécessaires :
Sous [macOS], le gestionnaire de paquets [Homebrew] installe [PHP] et ses extensions courantes : [brew install php]. Sous [Linux] ([Ubuntu]), la version fournie par la distribution est souvent plus ancienne ; le dépôt [ppa:ondrej/php] fournit les versions récentes :
On vérifie l'installation dans une nouvelle console :
La première commande doit afficher un numéro de version égal ou supérieur à 8.4 (par exemple [PHP 8.4.12]) ; la seconde liste les extensions chargées, parmi lesquelles [intl] et [pdo_mysql]. La commande [php --ini] indique quel fichier [php.ini] est utilisé.
13.2. Composer
[Composer] est le gestionnaire de bibliothèques de [PHP] (getcomposer.org). Il est fourni par [Laragon] ; sous [Windows], sans [Laragon], on utilise son installateur ([Composer-Setup.exe]) ; sous [macOS], [brew install composer] ; sous [Linux], les instructions de la page getcomposer.org/download. On vérifie l'installation :
Les commandes utiles, dans le dossier d'un projet (celui qui contient [composer.json]) :
[Composer] télécharge les bibliothèques depuis le dépôt [Packagist] (packagist.org) : il faut une connexion Internet lors de l'installation. Derrière un proxy d'entreprise, on indique le proxy par les variables d'environnement [HTTP_PROXY] et [HTTPS_PROXY]. Le dossier [vendor] ne se copie pas d'une machine à l'autre (il peut contenir des chemins absolus, et il est volumineux) : on le recrée par [composer install]. C'est pourquoi il ne fait pas partie des codes du cours. Le dossier [exemples] a son dossier [vendor], partagé par les 28 exemples ; l'étude de cas a le sien.
L'étude de cas utilise le composant [Runtime] de [Symfony], qui est aussi un greffon de [Composer] : c'est lui qui fabrique le fichier [vendor/autoload_runtime.php] lu par [public/index.php]. [Composer] demande l'autorisation d'exécuter un greffon ; le fichier [composer.json] de l'application la donne (rubrique [allow-plugins]). Sous [Linux], [Composer] refuse d'exécuter les greffons quand il est lancé par le compte [root], sauf si la variable d'environnement [COMPOSER_ALLOW_SUPERUSER] vaut [1] : sans elle, le fichier [autoload_runtime.php] manquerait (cf. « Les problèmes fréquents », dans l'étude de cas). Le mieux est de ne pas travailler sous le compte [root].
13.3. Installation de Visual Studio Code
[Visual Studio Code] se télécharge sur code.visualstudio.com. On y ajoute trois extensions (menu Affichage / Extensions) :
- PHP Intelephense : la complétion, la navigation dans le code (y compris celui de [Symfony], dans le dossier [vendor]), le signalement des erreurs ;
- Twig Language 2 : la coloration syntaxique et la complétion des vues [Twig] (fichiers [.html.twig]) ;
- YAML (de [Red Hat]) : la coloration et la vérification des fichiers de configuration ([config/packages/*.yaml]) et des dictionnaires ([translations/*.yaml]).
L'extension PHP Debug permet d'exécuter le code pas à pas, avec le débogueur [Xdebug] (une extension de [PHP], à installer à part : xdebug.org).
On ouvre le dossier [exemples], ou le dossier de l'étude de cas (menu Fichier / Ouvrir le dossier). Le terminal intégré (menu Terminal / Nouveau terminal) permet de lancer les applications, et les commandes [php bin/console ...], sans quitter l'éditeur.
13.4. Installation de MySQL avec Laragon
[Laragon] installe sous [Windows] un serveur [MySQL] prêt à l'emploi, avec l'outil d'administration [HeidiSQL]. Après installation :
- le bouton Démarrer tout lance le serveur [MySQL], sur le port 3306 ;
- l'utilisateur [root] n'a pas de mot de passe : ce sont les valeurs de la variable [DATABASE_URL] des fichiers [.env] de l'exemple 28 et de l'étude de cas ([mysql://root:@127.0.0.1:3306/...]) ;
- le bouton Base de données ouvre [HeidiSQL], où le menu Fichier / Exécuter un fichier SQL exécute les scripts [dbpersonnes.sql] (exemple 28) et [dbrdvmedecins2.sql] (étude de cas).
Sous [Linux] ou [macOS], on installera [MySQL] ou [MariaDB] avec le gestionnaire de paquets du système, et l'on exécutera les scripts avec le client en ligne de commande [mysql]. Le pilote [pdo_mysql] fonctionne avec les deux, sans aucun réglage. Sous [Linux], le compte [root] de [MariaDB] est souvent configuré pour ne se connecter que par le compte système [root] ([sudo mysql]) : on crée alors un utilisateur pour les applications, et on l'indique dans la variable [DATABASE_URL] de leur fichier [.env] ([mysql://cours:cours@127.0.0.1:3306/...]) :
Avec [MariaDB], on indique aussi sa version dans la variable [DATABASE_URL] ([serverVersion=10.11.2-MariaDB] au lieu de [serverVersion=8.0.32], par exemple) : [Doctrine] adapte le SQL qu'il écrit à la base utilisée.
13.5. Installation de curl
[curl] est livré avec [Windows] 10 et 11, [macOS] et la plupart des distributions [Linux]. Sous [PowerShell], il faut taper [curl.exe] et non [curl] : dans les anciennes versions de [PowerShell], [curl] est un alias d'une autre commande ([Invoke-WebRequest]), dont les options sont différentes. Dans l'invite de commandes de [Windows] ([cmd]), les guillemets d'une chaîne JSON s'écrivent [\"] (exemple 11), et une URL qui contient des [&] doit être entourée de guillemets doubles.
13.6. L'outil symfony
[Symfony] propose un outil en ligne de commande, le programme [symfony] (Symfony CLI), qui n'est pas nécessaire pour suivre ce document, mais que l'on rencontre partout dans la documentation. Il s'installe en suivant les instructions de la page symfony.com/download : sous [Windows], avec le gestionnaire de paquets [Scoop] ([scoop install symfony-cli]) ; sous [macOS], avec [Homebrew] ([brew install symfony-cli/tap/symfony-cli]) ; sous [Linux], avec le gestionnaire de paquets du système. Les commandes les plus utiles :
Son serveur de développement fait la même chose que [php -S localhost:8000 -t public], avec quelques avantages : il trouve lui-même le dossier [public], il sait servir le site en HTTPS (après [symfony server:ca:install]), il peut tourner en arrière-plan ([symfony server:start -d], puis [symfony server:stop]), et il choisit la version de [PHP] du projet quand plusieurs sont installées. Le serveur intégré à [PHP], utilisé dans ce document, a l'avantage de n'avoir rien à installer.