Pour ceux qui préfèrent la jouer "roots", comment installer manuellement l'ensemble composé d'Apache, php et MySQL (et phpMyAdmin tant qu'on y est) sans passer par une distribution quelconque ?
Mise à jour du 29/07/2019 : Prise en compte de MySQL 8.x plutôt que MySQL 5.7.
Installer Apache
Récupérer une version du binaire x64 pour Windows (la fondation renvoie sur d'autres sites, ne fournissant que le source). Par exemple, sur Apache Lounge.
Désarchiver dans un répertoire C:\Apache24.
Depuis une ligne de commandes en mode administrateur, se rendre dans le répertoire bin de l'installation et installer Apache comme service :
httpd -k install
Avec l'outil d'administration de Windows des services, modifier les propriétés du service pour un démarrage manuel et non automatique.
Tester en accédant à http://localhost depuis un navigateur.
Editer la configuration httpd.conf pour qu'Apache écoute sur le port 80 pour pour donner accès aux utilitaires (phpMyAdmin et autres, stockés sur C:\www) et sur le port 81 pour donner accès aux applications en développement (stockées sur D:\www) :
-
Pour les utilitaires, renvoyer sur le répertoire C:\www :
DocumentRoot "C:\www" <Directory "C:\www"> ... </Directory>
-
Pour les applications, renvoyer sur D:\www :
Listen 81 <VirtualHost localhost:81> DocumentRoot "D:www" <Directory "D:\www"> Options Indexes Require all granted </Directory> </VirtualHost>
Tester en accédant à http://localhost:81 depuis un navigateur.
Installer PHP 7.x
Cliquer ici pour récupérer une version TS (thread safe) x64 pour Windows.
Désarchiver dans un répertoire C:\PHP7.
Recopier le fichier php.ini-development sous le nom php.ini dans ce même répertoire.
Editer la configuration d'Apache (httpd.conf) :
-
Rajouter ces lignes pour qu'Apache utilise PHP en cas d'appel à un fichier d'extension .php :
AddType application/x-httpd-php .php PHPIniDir "C:\PHP7" LoadModule php7_module "C:\PHP7\php7apache2_4.dll"
Pour PHP 8, c'est la même chose, mais il faut spécifier php_module, et non php8_module, comme on pourrait le croire... -
Par ailleurs, rajouter index.php dans la directive IfModule pour qu'Apache renvoie par défaut sur ce fichier en cas d'accès à un répertoire :
<IfModule dir_module> DirectoryIndex index.html, index.php </IfModule>
Créer un fichier PHP de base :
<?php phpinfo (); ?>
Redémarrer Apache et tester en accédant au fichier (redémarrer Apache au besoin).
Pour visualiser toutes les erreurs (notamment le chargement d'extensions), consulter error.log dans le répertoire logs d'Apache.
Noter qu'à ce stade initial, un plantage d'Apache au démarrage s'explique souvent par le fait que la version de PHP installée n'est pas la version (TS) Thread Safe.
Installer MySQL Community Server 8.x
Cliquer ici pour récupérer une version de l'installateur de la version x64 pour Windows (l'installateur est x86, mais il installe la version x64).
Pour installer cette version, il faut avoir installé le package de distribution de Visual C++ 2015 (X64). Cliquer ici pour récupérer ce package.
Installer le serveur MySQL uniquement. Adopter toutes les options de configuration proposées par défaut, sauf :
- Use Strong Password Encryption for Authentication (RECOMMENDED), à remplacer par Use Legacy Authentication Method (Retain MySQL5.x Compatibility) pour ne pas créer d'incompatibilité avec l'extension mysqli de PHP ;
- Start the MySQL Server at System Startup, à décocher pour contrôler le démarrage manuellement, comme Apache.
Si par la suite, chaque jour à minuit, la fenêtre d'une ligne de commandes s'ouvre pour l'exécution d'une tâche qui se rapporte à MySQL, désactiver la tâche qui en est à l'origine dans le Planificateur de tâches de Windows :
Installer phpyMyAdmin
Cliquer ici pour récupérer une version de phpMyAdmin pour PHP7.
Désarchiver dans un répertoire C:\www\phpMyAdmin.
Editer la configuration de PHP (php.ini) pour activer l'extension mysqli :
-
Modifier le répertoire des extensions :
extension_dir = "C:/PHP7/ext"
-
Décommenter la ligne déjà prévue :
extension=mysqli
Tester si l'extension est bien chargée : phpinfo () doit lui consacrer dorénavant une section (redémarrer Apache au besoin).
Accéder à http://localhost/phpMyAdmin.