Skip to content

12. Installation d’un serveur PHP

Ce chapitre référence le serveur de calcul de l’impôt développé dans le cours « Introduction au langage PHP7 par l’exemple » disponible à l’URL [https://stahe.github.io/php7-juillet-2019/]. Ce serveur abrite un service jSON offrant les services suivants :

  • [init-session] GET main.php?action=init-session&type=json — indique au serveur que l’on veut des réponses jSON ;
  • [authentifier-utilisateur] POST main.php?action=authentifier-utilisateur : les deux paramètres postés [user, password] autorisent ou non la connexion au service jSON. Par défaut les identifiants sont [admin, admin] ;
  • [calculer-impot] POST main.php?action=calculer-impot : les paramètres postés [marié, enfants, salaire] permettent de calculer un impôt :
    • marié : « oui » si marié, « non » sinon ;
    • enfants : nombre d’enfants du contribuable ;
    • salaire : salaire annuel du contribuable ;
  • [lister-simulations] GET main.php?action=lister-simulations — liste les simulations faites depuis le début de la session ;
  • [supprimer-simulation] GET main.php?action=supprimer-simulation&numéro=x — supprime la simulation n° x de la liste des simualations ;
  • [get-admindata] GET main.php?action=get-admindata — récupère dans un objet jSON la totalité de la base de données associée au serveur ;
  • [fin-session] GET main.php?action=fin-session : termine la session. Pour en commencer une autre l’utilisateur devra émettre l’ordre « init-session » ci-dessus ;

Nous allons écrire plus tard des scripts TypeScript qui interrogeront ce serveur jSON. Nous décrivons maintenant comment installer celui-ci. Si vous ne voulez pas installer ce serveur, passez directment au chapitre Les fonctions HTTP de TypeScript. Vous ne pourrez pas tester les scripts en conditions réelles mais vous pourrez examiner le code.

12.1. Installation de Laragon

En septembre 2026, l’outil Laragon est disponible à l’URL [Download Laragon – Fast & Modern Dev Environment ]. Laragon amène avec lui des outils qui permettent d’installer un serveur PHP et le SGBD MySQL :

Image

  • en [1], un serveur web Apache ;
  • en [2], le SGBD MySQL ;
  • en [3], un outil de messagerie que nous n’utiliserons pas ;
  • en [4], lance tous les services (Apache, MySQL, MailPit) ;
  • en [5], affiche la page web d’URL [http://localhost]. Par défaut, cette URL désigne le dossier <laragon-install>\www où <laragon-install> est le dossier d’installation de Laragon ;
  • en [6], lance l’Outil HeidiSQL qui permet de gérer des bases de données MySQL. C’est avec cet outil que nous créerons la base de données utilisée par le serveur de calcul de l’impôt ;
  • en [7], ouvre un terminal dans lequel tous les binaires utiles à Laragon sont dans le PATH ;
  • en [8], ouvre un explorateur windows dans le dossier associé à l’URL [http://localhost] ;

Le dossier d’installation de Laragon comporte les éléments suivants :

 
  • En [1], le dossier [bin] contient tous les binaires nécessaires à Laragon ;
  • En [2-3], le dossier d’installation de PHP ;
  • En [4], l’exécutable de PHP et son fichier de configuration ;

12.2. Configuration de l’environnement du serveur PHP

Les codes du document sont |ICI| sous la forme d’un dossier ZIP. Une fois décompressé, vous obtenez l’arborescence suivante :

  • En [1], le code du serveur PHP qui sera exécuté par Laragon ;

Examinons ce dossier :

  • En [1], les extensions PHP nécessaires au serveur du calcul de l’impôt ;
  • en [2], le script SQL qui permet de créer la base de données exploitée par le serveur ;
  • en [3], le dossier des fichiers de configuration de l’application. Il va falloir modifier l’un d’eux ;
  • en [4], le script [index.php] qui est le point d’entrée du serveur de calcul de l’impôt. Il fait une redirection automatique sur le fichier [main.php] (5). C’est ce dernier qui pilote le serveur ;

12.3. Installer les extensions PHP

Décompresser le dossier [php-vendor.zip] ci-dessus dans un dossier appelé obligatoirement [vendor] dans le dossier <laragon_install>/www, où <laragon_install> est le dossier d’installation de Laragon :

 

12.4. Paramétrer le serveur du calcul de l’impôt

Les fichiers de configuration du serveur sont dans le dossier [Config] du dossier [php_serveur] :

  • En [1], le dossier des fichiers de configuration du serveur ;
  • en [2], [config.json] configure le serveur PHP ;
  • en [3], [database.json] configure la base de données ;

12.4.1. Le fichier [config.json]

Ce fichier contient de nombreuses informations. Seule une doit être modifiée :



"databaseFilename": "Config/database.json", 
"corsAllowed": true, 
"redisAvailable": false, 
"rootDirectory": "C:/.../php_server",
 "relativeDependencies": [
"/Entities/BaseEntity.php",
...
  • En [5], mettez le nom complet du dossier [php_server] dans votre système de fichiers ;

Dans ce même fichier on trouve les identifiants [admin, admin] de l’administrateur du serveur :


"users": [
{
"login": "admin",
"passwd": "admin"
}
],

Si vous voulez changer ces identifiants, c’est ici qu’il faut le faire.

12.4.2. Le fichier [database.json]

Ce fichier configure la base de données MySQL utilisée par le serveur PHP :


{
"dsn": "mysql:host=localhost;dbname=dbimpots-2019",
"id": "admimpots",
"pwd": "mdpimpots",
"tableTranches": "tbtranches",
...

Normalement pour une mise en route simple du serveur PHP, vous n’avez rien à modifier :

  • ligne 2 : le nom de la base de données MySQL ;
  • lignes 3-4 : les identifiants de l’administrateur de cette base ;

Si vous souhaitez modifier ce fichier lignes 1-3, vous aurez à modifier également le script de création de la base de données MySQL [create_dbimpots.sql] que nous allons utiliser prochainement ;

12.4.3. Le script principal [main.php]

 

Dans le dossier [php_server] du serveur PHP, [main.php] est le contrôleur principal du serveur PHP. Normalement vous n’avez pas à y toucher. Je vais vous montrer cependant deux lignes importantes de ce code :


<?php

// respect strict des types déclarés des paramètres de fonctions
declare (strict_types=1);

// espace de noms

namespace Application;

// dépendances Symfony
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;

// gestion des erreurs par PHP
ini_set("display_errors", "1");
error_reporting(E_ALL & !E_WARNING & !E_DEPRECATED);
// on récupère la configuration
$configFilename = __DIR__ . "/Config/config.json";
$fileContents = \file_get_contents($configFilename);
$erreur = FALSE;
...

Les lignes importantes sont les lignes 16 et 17 :

  • ligne 16 : demande à ce que les erreurs d’exécution soient affichées. C’est préférable pour tester ce code que vous ne connaissez pas. Une erreur de configuration provoquera un plantage dont la cause sera alors affichée. Mettez 0 à la place de 1 si vous voulez changer ce comportement ;
  • ligne 17 : on demande à ce que l’interpréteur PHP signale lors de la compilation du code, toutes les erreurs (E-ALL) sauf ( !) les avertissements (E_WARNING) et les intructions dépréciées (E_DEPRECATED). Ainsi des instructions valides avec PHP 7 ont été dépréciées en PHP 8. Cela signifie qu’il existe maintenant une autre syntaxe conseillée pour ces instructions. Le serveur de calcul de l’impôt a été écrit en 2019 avec PHP 7. Il contient plein d’instructions dépréciées par PHP 8 mais toujours exécutables. La ligne 17 permet de ne pas afficher les erreurs de dépréciation.

Vous n’avez pas à toucher à ces lignes pour commencer les tests du serveur.

12.5. Paramétrage du serveur Apache

Par défaut, avec Laragon, l’URL [http://localhost] désigne le dossier <install_laragon>/www, où <install_laragon> est le dossier d’installation de Laragon :

 

Si on ne change pas la configuration de Laragon, l’URL [http://localhost] affichera le fichier [index.php] ci-dessus. Nous voulons désormais que cette URL affiche le fichier [index.php] du serveur de calcul de l’impôt. Nous procédons ainsi :

 
  • En [1], accédez aux paramètres de Laragon ;
 
  • En [2], modifiez le [Document Root] qui désigne la racine du serveur Apache. Mettez en [2], le nom complet du dossier [php_server]. C’est le même nom que celui que vous avez mis dans le fichier [config.json] (ligne 5 ci-dessous) :

{
"databaseFilename": "Config/database.json",
"corsAllowed": true,
"redisAvailable": false,
"rootDirectory": "C:/Data/st-2026/GitHub Pages/fr_FR2/downloads/typescript-sept-2026/php_server",
"relativeDependencies": [

"/Entities/BaseEntity.php",
"/Entities/Simulation.php",
"/Entities/Database.php",

Après cette modification, le système Windows va vous demander plusieurs autorisations. Validez-les toutes.

Il y a deux façons de vérifier cette nouvelle configuration du serveur Apache avec Laragon :

 

L’option [1] ouvre un explorateur Windows sur le dossier que vous avez défini comme [Document Root] précédemment :

L’explorateur doit se positionner sur le dossier [php_server] (1).

Une autre façon de vérifier votre configuration Apache est la suivante :

 

L’option [1] affiche l’URL [http://localhost]. Après le changement de [Document Root] opéré précédemment, cette URL doit afficher le fichier [index.php] du dossier [php_server]. Pour le vérifier, lancez tous les services (2). L’option [1] donne alors le résultat suivant :

 

Laragon a lancé un navigateur qui a affiché l’URL [http://localhost/index.php] suivante :


<?php
// redirection vers [main.php] en mode [html]
header('Location: main.php?action=init-session&type=html');

La ligne 3 ci-dessous redirige le navigateur vers l’URL [http://localhost/main.php?action=init-session&type=html]. C’est cette URL que vous voyez ci-dessus en [1]. Cette URL affiche un formulaire d’authentification pour le calcul de l’impôt.

12.6. Création de la base de données

Si vous en êtes arrivés là, il n’y a plus que la base de données MySQL à créer. On utilise là encore une option de Laragon :

 
  • En [1], tous les services doivent être lancés ;
  • en [2], l’option [Database] vous permet de gérer la base de données ;

L’option [Database] lance un utilitaire appelé HeidiSQL :

  • En [1], vous pouvez sélectionner divers SGBD. La valeur par défaut proposée est le SGBD MySQL. Cela convient ;
  • en [2], vous ouvrez une session de HeidiSQL ;
  • En [1-2], exécutez un fichier SQL puis choisissez le fichier [create_dbimpots.sql] que vous trouverez dans le dossier [php_server] :
 

L’exécution du fichier [2] va créer la base [dbimpots-2019] utilisée par le serveur de calcul de l’impôt. Pour le voir, faites F5 dans HeidiSQL pour rafraîchir l’affichage :

 

La base de données [dbimpots-2019] a été créée.

12.7. Tests du serveur de calcul de l’impôt

Si ce n’est déjà fait, lancez tous les services de Laragon. Puis dans un navigateur, demandez l’URL [http://localhost] :

  • Les identifiants en [1-2] sont admin/admin. Ils sont définis dans le fichier [config.json] du serveur ;
  • en [3], validez les identifiants ;

Vous obtenez alors la page suivante :

  • Remplissez le formulaire [1-3], puis validez [4] ;

On obtient la nouvelle page suivante :

  • En [1], le résultat de calcul de l’impôt. Cette page utilise la base données alors que les pages précédentes ne l’utilisaient pas. Si vous obtenez le résultat [1], c’est que votre base de données est correctement configurée.

Nous sommes désormais prêts pour interroger le serveur de calcul de l’impôt avec des clients TypeScript. Pour cela, nous allons utiliser la version jSON du serveur.

12.8. L’API jSON du serveur de calcul de l’impôt

Pour découvrir l’API jSON du serveur de calcul de l’impôt, nous allons utiliser l’outil Postman [https://www.postman.com/downloads/]. Vous aurez peut-être à créer un compte.

Lancez tous les services de Laragon, puis ouvrez l’application de bureau Postman :

  • En [1-2], créez une requête HTTP pour interroger le serveur de calcul de l’impôt ;
 
  • En [1], vous pouvez donner un nom à votre requête HTTP. Vous pourrez la sauvegarder et la retrouver;
  • en [2] : mettez l’URL du serveur que vous voulez interroger ;
  • en [3] : choissez le type de requête HTTP. Nous en utiliserons deux dans ce qui suit : GET et POST ;
  • en [4] : si votre requête a des paramètres du type [?param1=val1&param2=val2&…], vous pouvez les définir ici;
  • en [5] : si le type de requête est POST, c’est ici que vous défénirez les valeurs postées ;

Dans [php_server], vous trouverez une collection de requêtes HTTP vers le serveur de calcul de l’impôt que vous pouvez importer dans POSTMAN. Procédez de la façon suivante :

 

Nous allons importer dans Postman, la collection [1-2]. Dans Postman faites [Ctrl-O] :

 
  • Utilisez le lien [1] pour importer le fichier [impots-servers-tests.postman_collection.json] du dossier [php_server] :
 
  • En [1], le nom de la collection importée ;
  • en [2], son contenu. C’est une liste de requêtes HTTP vers le serveur jSON du calcul de l’impôt ;

Voyons par exemple la requête nommée [init-session-json-700]. Elle initialise une session jSON avec le serveur :

 
  • En [1], la requête HTTP est un GET ;
  • en [2], l’URL interrogée. Elle demande à initier un dialogue jSON avec le serveur ;
  • en [3-4], on retrouve les paramètres du GET ;
  • en [5], pour envoyer la requête au serveur du calcul de l’impôt ;

Avant d’envoyer la requête assurez-vous que vous avez bien lancé les services de Laragon. La réponse jSON du serveur est la suivante :

 

Utilisez maintenant la requête nommée [init-session-703] :

Image

La requête [1-2] est invalide. En effet les paramètres doivent être du type [?action=xx&type=yy] où type peut être ‘html’, ‘xml’ ou ‘json’. Le type ‘x’ ne sera pas reconnu. La réponse jSON du serveur est la suivante :

 

Rejouez la requête [init-session-json-700] pour redémarrer une session jSON. Puis jouez la requête [authentifier-utilisateur-200] pour vous identifier :

 
  • En [1], la requête est un POST ;
  • en [2], l’URL d’authentification ;
  • en [3], le corps du POST qui contient les valeurs postées ;
  • en [4-5], les deux valeurs postées. Ce sont les identifiants de l’administrateur de l’application. Ils sont définis dans le fichier [config.json] du serveur ;

La réponse jSON du serveur est la suivante :

 

Une fois que vous êtes authentifié, vous pouvez faire un calcul d’impôt. Utilisez pour cela la requête [calculer-impot-300] :

 
  • En [1], c’est une requête POST ;
  • en [2], l’URL appelée ;
  • en [3-4], les trois valeurs postées ;

La réponse jSON est la suivante :

 

Rejouez la requête plusieurs fois en changeant les valeurs postées. Ceci fait, jouez la requête [lister-simulations] qui va afficher la listes des simulations que vous avez faites :

 
  • La requête GET [1-4] a le seul paramètre [action]. La réponse jSON est la suivante :
 

C’est la liste des simulations que vous avez faites.

Utilisez la requête [supprimer-simulation-600] pour supprimer une simulation :

 
  • En [2], l’URL est interrogée avec un GET. Elle comprend deux paramètres [action, numéro]. [numéro] est le n° de la simulation que vous voulez supprimer de la liste des simulations. Ici le numéro 0 désigne la première simulation de la liste ;

La réponse jSON du serveur est la suivante :

 

La réponse jSON est la liste restante des simulations après suppression de l’une d’entre elles ;

Enfin vous pouvez terminer la session avec la requête [fin-session-400] :

 

L’URL [1-2] n’a que le paramètre [action] (3). La réponse jSON est la suivante :

 

Vous avez maintenant une bonne idée de l’API jSON exposé par le serveur de calcul de l’impôt. Nous allons pouvoir aborder l’écriture de scripts TypeScript qui interrogeront ce serveur jSON.