Module 1Introduire la notion client/serveur
Chapitre 3 sur 11
Préparer l'environnement de développement
Installer XAMPP, configurer Apache et PHP, et préparer VS Code pour le développement PHP.
- ≈ 125 min
- 5 leçons
- 1 vidéo
- 2 exercices
Module 1Introduire la notion client/serveur
Chapitre 3 sur 11
Installer XAMPP, configurer Apache et PHP, et préparer VS Code pour le développement PHP.
Objectifs
Avec ce chapitre, tu sauras…
httpd.conf, port, DocumentRoot, modules, hôtes virtuels ;php.ini, affichage des erreurs, extensions ;Leçon 1
Apache et Nginx se partagent l'essentiel du web. Le résumé indique (statistiques W3Techs de l'époque) qu'Apache est utilisé par environ 31 % des sites dont on connaît le serveur ; Nginx est son principal concurrent.
| Apache | Nginx | |
|---|---|---|
| systèmes | Unix, Linux et Windows (support complet) | systèmes Unix ; support limité de Windows |
| traitement des requêtes | un processus ou un thread par connexion | événementiel : un seul processus gère des milliers de connexions |
| contenu dynamique | traité dans le serveur (module PHP) | transmis à un programme externe (PHP-FPM) |
| contenu statique | bon | très rapide, moins de mémoire |
| modules | chargés et déchargés dynamiquement | compilés dans le serveur |
| configuration | fichiers .htaccess par dossier, très souple | un fichier central, pas de .htaccess |
| rôle | serveur web | serveur web et proxy inverse |
Leçon 2
C:\xampp (évite Program Files, à cause des droits).http://localhost : la page d'accueil de XAMPP s'affiche ; http://localhost/phpmyadmin ouvre phpMyAdmin.Leçon 3
| Directive | Rôle | Exemple |
|---|---|---|
ServerRoot | dossier d'installation d'Apache | ServerRoot "C:/xampp/apache" |
Listen | port (et adresse) d'écoute | Listen 80 |
ServerName | nom (et port) du serveur | ServerName localhost:80 |
ServerAdmin |
Leçon 4
| Directive | Développement | Production | Rôle |
|---|---|---|---|
display_errors | On | Off | afficher les erreurs dans la page |
error_reporting | E_ALL | E_ALL | quelles erreurs signaler |
log_errors | On |
Leçon 5
| Extension | Utilité |
|---|---|
| PHP Intelephense | auto-complétion, détection d'erreurs, navigation dans le code PHP |
| PHP Debug (avec Xdebug) | exécuter pas à pas, poser des points d'arrêt |
| PHP Server ou Live Server | lancer rapidement une page |
| Prettier / PHP CS Fixer | mise en forme automatique |
| MySQL (par exemple de Weijan Chen) | interroger la base depuis VS Code |
1Le dossier public de XAMPP où l'on place ses pages est…
2La directive qui fixe le port d'Apache est…
3Le module de réécriture d'URL est…
4Nginx traite les requêtes de façon…
5En production, display_errors doit valoir…
6Après avoir modifié httpd.conf, il faut…
7La commande qui vérifie la syntaxe de la configuration est…
L'essentiel du chapitre
.htaccess, Windows) ou Nginx (événementiel, très rapide, proxy) ; ce module utilise Apache.htdocs ; http://localhost/....httpd -k install|start|stop|restart, net start Apache2.4, httpd -t.httpd.conf : Listen (port), DocumentRoot, ServerName, LoadModule, ErrorLog ; hôtes virtuels ; redémarrer après chaque modification.php.ini : display_errors (On en dev, Off en prod), error_reporting, date.timezone, extension=pdo_mysql.php -S localhost:8000.C:\xampp\htdocs\m107 : tout fichier placé dans htdocs est accessible par http://localhost/....Vidéo · À regarder
ENPHP Full Course 2025 - Learn PHP from Scratch
Dani Krossing · YouTube
| Action | Commande (invite de commandes administrateur, dossier Apache24\bin) |
|---|---|
| installer le service | httpd.exe -k install (nommé : httpd.exe -k install -n "MonApache") |
| désinstaller | httpd.exe -k uninstall -n "MonApache" |
| démarrer | httpd.exe -k start ou net start Apache2.4 |
| arrêter | httpd.exe -k stop ou net stop Apache2.4 |
| redémarrer | httpd.exe -k restart |
| tester la configuration | httpd.exe -t (affiche Syntax OK si le fichier est correct) |
ServerAdmin admin@ofppt.ma |
DocumentRoot | dossier racine des pages publiées | DocumentRoot "C:/xampp/htdocs" |
DirectoryIndex | page par défaut d'un dossier | DirectoryIndex index.php index.html |
LoadModule | charger un module | LoadModule rewrite_module modules/mod_rewrite.so |
ErrorLog, CustomLog | fichiers journaux des erreurs et des accès | ErrorLog "logs/error.log" |
HostnameLookups | enregistrer le nom des clients (lent) ou leur IP | HostnameLookups Off |
| Module | Rôle |
|---|---|
core | les fonctions de base, toujours présentes |
mod_rewrite | réécriture d'URL : /stagiaires/12 au lieu de /stagiaire.php?id=12 (chapitres 9 et 10) |
mod_ssl | chiffrement HTTPS (SSL/TLS) |
mod_proxy | serveur mandataire (proxy) |
mod_headers | modifier les en-têtes HTTP |
| PHP | exécuter les fichiers .php (module ou PHP-FPM) |
On| écrire les erreurs dans un fichier journal |
upload_max_filesize | 20M | selon le besoin | taille maximale d'un fichier envoyé |
post_max_size | 25M | selon le besoin | taille maximale d'un formulaire POST |
date.timezone | Africa/Casablanca | idem | fuseau horaire des fonctions de date |
extension=pdo_mysql | activée | activée | pilote PDO pour MySQL (chapitre 7) |
| EditorConfig |
| conventions d'indentation communes à l'équipe |
Nginx a été créé pour le problème des dix mille connexions simultanées. Pour apprendre et pour la plupart des projets, Apache est le meilleur choix : configuration simple, nombreux modules, fichiers .htaccess, et il est inclus dans XAMPP. C'est le serveur utilisé dans ce module.
La solution simple : XAMPP
Installer XAMPP
La configuration d'Apache est écrite dans des fichiers texte du dossier conf : le fichier principal est httpd.conf (C:\xampp\apache\conf\httpd.conf avec XAMPP, /etc/apache2/ sous Linux). Après chaque modification, il faut redémarrer Apache.
Installe XAMPP et VS Code avec PHP Intelephense. Crée htdocs/m107/ch03/index.php qui affiche la version de PHP, la valeur de display_errors (ini_get('display_errors')) et le fuseau horaire (date_default_timezone_get()). Règle date.timezone sur Africa/Casablanca dans php.ini, redémarre Apache et vérifie le changement. Bonus : crée l'hôte virtuel stagiaires.local.
Le panneau XAMPP affiche : « Port 80 in use by "Unable to open process" with PID 4! Apache WILL NOT start ». Explique le problème et donne les modifications à faire dans httpd.conf pour faire tourner Apache sur le port 8081, puis l'adresse à taper dans le navigateur.
<?php
phpinfo(); // affiche toute la configuration de PHPOuvre http://localhost/m107/info.php : tu vois la version de PHP, le fichier php.ini chargé et les extensions actives (cherche pdo_mysql). Supprime ce fichier sur un vrai serveur : il donne trop d'informations à un attaquant.
Installer un serveur local (XAMPP) pour PHP (en anglais).
Apache seul, en service Windows
On peut aussi installer Apache seul (binaires pour Windows, par exemple sur Apache Lounge) et l'installer comme service depuis son dossier bin :
Sous Linux : sudo systemctl start|stop|restart|status apache2.
Si Apache refuse de démarrer, un autre programme utilise souvent le port 80 (Skype dans le passé, IIS, un autre serveur). Change le port dans httpd.conf : Listen 8080 et ServerName localhost:8080, puis ouvre http://localhost:8080. Le bouton Netstat du panneau XAMPP montre quel programme occupe un port.
Tableau: Les modules
Les hôtes virtuels
Un hôte virtuel permet d'héberger plusieurs sites sur le même Apache, chacun avec son nom et son dossier. Dans conf/extra/httpd-vhosts.conf :
<VirtualHost *:80>
ServerName stagiaires.local
DocumentRoot "C:/xampp/htdocs/m107/stagiaires/public"
<Directory "C:/xampp/htdocs/m107/stagiaires/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>Ajoute ensuite 127.0.0.1 stagiaires.local au fichier C:\Windows\System32\drivers\etc\hosts (en administrateur), redémarre Apache, et ouvre http://stagiaires.local.
En développement, les messages d'erreur t'aident à corriger. En production, ils révèlent des chemins de fichiers, des noms de tables ou des requêtes SQL à un attaquant : on les cache (display_errors = Off) et on les enregistre dans un journal (log_errors = On). On y revient au chapitre 8.
Sans Apache, PHP propose un petit serveur de développement : dans un terminal, place-toi dans ton dossier et tape php -S localhost:8000, puis ouvre http://localhost:8000. Pratique pour un test rapide, mais jamais pour la production.