Réglages courants de WampServer
Le 27 février 2016 (mis à jour le 31 mai 2019) dans Développement web
Les réglages ci-dessous sont courants pour une installation de Wamp Server toute fraîche.
Changer le répertoire root du serveur
C'est le répertoire qui s'affiche lorsqu'on lance Wamp et que l'on va sur localhost (ou 127.0.0.1) dans son navigateur. Par défaut, c'est le dossier /www du répertoire d'installation de Wamp.
Éditer le fichier C:\Program Files\Wamp\bin\apache\apachex.y.z\conf\httpd.conf et modifier la directive DocumentRoot
pour la faire pointer vers le répertoire choisi. De plus, il faut également modifier quelques lignes en-dessous le chemin dans la balise <Directory>
.
Envoyer des mails
Il vous faudra pour cela le programme Fake Sendmail (à extraire dans un dossier sendmail
du répertoire d'installation, par défaut C:\wamp).
Ouvrir votre fichier php.ini (par défaut dans C:\wamp\bin\apache\apacheX.Y.Z\bin) et chercher l'option sendmail_path
. La décommenter (enlever le point-virgule au début) et ajouter le chemin vers sendmail, comme suit :
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
Enregistrer et fermer le fichier, puis redémarrer Wamp Server.
Il vous faudra ensuite écrire le code permettant d'envoyer un email. En PHP, je passe par la librairie PHPMailer. Télécharger la dernière version, puis récupérer les fichiers suivants (pas besoin des autres fichiers pour une simple fonctionnalité d'envoi d'emails) :
Cette librairie PHP est très populaire, et beaucoup de développeurs l'incluent dans leur projet pour sa simplicité. De ce fait, elle constitue une cible de choix pour les pirates : plusieurs vulnérabilités ont été découvertes par le passé, corrigées immédiatement par la communauté de développement très active sur ce projet. Il faudra donc bien veiller à la mettre à jour régulièrement, simplement en téléchargeant les nouveaux fichiers et en les extrayant à la place des anciens. Vous pouvez d'ailleurs écrire un petit script à cette fin.
Placez les fichiers dans un même dossier de votre projet, incluez le fichier PHPMailerAutoload.php
(et seulement celui-ci), puis écrivez une fonction d'envoi d'emails.
Voilà la fonction d'envoi d'emails que j'utilise ; pas parfaite, mais elle convient à mes besoins.
// Constantes
define("EXPEDITEUR_NOM", "Vous");
define("EXPEDITEUR_ADRESSE", "noreply@votredomaine.tld");
// Permet de déterminer si on est en dev ou en prod
if($_SERVER['HTTP_HOST'] == 'votredomaine.tld'){
define('ENV', 'prod');
define("SMTP_HOST", "127.0.0.1");
define("SMTP_PORT", "25");
define("SMTP_USERNAME", "");
define("SMTP_PASSWORD", "");
}
else {
define('ENV', 'dev');
define("SMTP_HOST", "127.0.0.1");
define("SMTP_PORT", "25");
define("SMTP_USERNAME", "");
define("SMTP_PASSWORD", "");
}
// La fonction en tant que telle
// Remarque : $to peut être une adresse email ou un Array d'adresses email
function send_mail($to, $sujet, $message, $fromName, $fromEmail){
$mail = new PHPMailer;
$mail->setLanguage('fr', 'phpmailer.lang-fr.php');
$mail->isSMTP();
$mail->XMailer = ' ';
$mail->Port = SMTP_PORT;
$mail->Host = SMTP_HOST;
if(ENV == 'dev'){
$mail->SMTPDebug = 3;
$mail->SMTPAuth = false;
}
else {
$mail->SMTPDebug = 0;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = SMTP_USERNAME;
$mail->Password = SMTP_PASSWORD;
}
$mail->AddReplyTo($fromEmail, $fromName);
$mail->From = EXPEDITEUR_ADRESSE;
$mail->FromName = EXPEDITEUR_NOM;
if(gettype($to) == 'array'){
foreach($to as $adresse){
$mail->AddBCC($adresse);
}
}
else {
$mail->addAddress($to);
}
$mail->WordWrap = 50;
$mail->isHTML(true);
$mail->Subject = "=?utf-8?b?".base64_encode($sujet)."?=";
$mail->Body = $message;
if($mail->send()) {
return true;
}
else {
return $mail->ErrorInfo;
}
}
J'utilise une petite condition au début pour savoir si on est en environnement de dev ou de prod. Vous pouvez ainsi avoir des réglages SMTP différents selon l'environnement. Pour la configuration que je vous propose dans cet article, c'est à dire en travaillant en local sur votre machine Windows, il faut laisser le serveur à 127.0.0.1 sur le port 25 en local. Pour votre environnement de prod, c’est à vous de régler les paramètres.
Pour finir, afin de recevoir les emails, je vous propose le très pratique Papercut qui émulera un serveur mail sur votre ordinateur. Lorsque vous enverrez des emails depuis votre application web en développement, ceux-ci seront reçus par Papercut. Ainsi, vous n'aurez pas besoin de dépendre d'un service externe. Il suffit simplement d'installer et lancer ce logiciel pour l'utiliser :
Dernière astuce pour les emails : je vous conseille d'utiliser ce template d'email HTML. Il est simple, propre, et fonctionne dans tous les webmails et logiciels, desktop et mobile.
Rendre accessible Wamp sur votre réseau local
Par défaut, vous ne pouvez pas accéder à votre serveur Wamp depuis une autre machine. Pourtant, cela peut être utile pour tester son application ou son site web depuis une autre configuration (résolution différente, test sur mobile...).
Pour cela, ouvrir le fichier httpd.conf (par défaut dans C:\wamp\bin\apache\apacheX.Y.Z\conf) et chercher l'expression Require local
(chez moi, autour des lignes 280). Cette instruction autorise votre propre PC. Sur la ligne du dessous, ajoutez alors :
Require ip a.b.c.d
où a.b.c.d est l'adresse IP du PC que vous souhaitez autoriser. Si vous le souhaitez, vous pouvez également écrire seulement les premiers octets de l'adresse IP afin d'autoriser tout votre réseau local, ou utiliser la notation CIDR :
Require ip a.b.c Require ip a.b.c.0/24
La plupart du temps, votre réseau local sera 192.168.0.0/24. Toutefois, vérifiez bien sur quelle réseau vous vous trouvez à l'aide de la commande ipconfig
sur Windows ou ifconfig
sur Linux.
Attention, cette astuce est valable pour la version 2.4+ de WampServer, qui utilise Apache 2.4.x au minimum. Pour les versions antérieures, il y a une autre syntaxe. Profitez-en pour mettre à jour WampServer, ça fait pas de mal !
Enregistrer et fermer le fichier, puis redémarrer Wamp Server.
Configurer cURL pour le HTTPS
Si vous avez à utiliser cURL pour récupérer du contenu depuis d'autres sites web, vous avez sans doute eu des petits soucis pour joindre les sites en HTTPS. En effet cURL pour fonctionner a besoin de savoir à quels certificats ils peut faire confiance. Or par défaut, aucune configuration n'est faite, cURL ne fait donc confiance à aucune connexion HTTPS et on se retrouve bien embêté.
Beaucoup de solutions sur Internet préconisent d'utiliser les options CURLOPT_SSL_VERIFYPEER
à false ou encore CURLOPT_SSL_VERIFYHOST
à 0, mais c’est une très mauvaise chose, car cela indique que cURL ne doit faire aucune vérification sur les certificats qu'ils rencontre. Aïe !
On va plutôt passer par la solution intelligente et installer la bibliothèque de certificats à qui cURL doit faire confiance. Pour cela, téléchargez le fichier cacert.pem depuis le site officiel de cURL, puis placez-le où vous le souhaitez sur votre disque-dur (j'ai choisi de le mettre dans C:\wamp\bin\php). Ce fichier, mis régulièrement à jour, contient la base de certificats des autorités de certification (qui permettent de signer les certificats des sites web) que Mozilla intègre dans son navigateur Firefox.
Il faut ensuite dire à PHP d'utiliser cette bibliothèque de certificats. Pour cela, il faut éditer vos fichiers php.ini (c'est à dire, celui du dossier C:\wamp\bin\apache\apacheX.Y.Z et celui du dossier C:\wamp\bin\php\phpu.v.w) et rajouter ces options :
curl.cainfo = "C:/wamp/bin/php/cacert.pem"
openssl.cafile = "C:/wamp/bin/php/cacert.pem"
Vérifiez également que la ligne suivante est décommentée (pas de point-virgule au début) :
extension=php_openssl.dll
On termine en relançant tous les services de WampServer.
Installez une autre version de PHP, Apache ou phpMyAdmin
Si vous souhaitez installer une autre version de PHP sur WampServer (pour faire une mise à jour, ou alors parce que vous devez vous adapter aux contraintes de l'environnement de production de votre société), l'opération est assez simple. Prenons pour exemple PHP.
Commencez par télécharger la version de PHP depuis le site officiel. Prenez de préférence une version Thread Safe. Différentes versions de "VC" existent : elles dépendent de la version du package de Visual C++ installée sur votre ordinateur. Sauf contraintes, VC11 est un bon choix, car il sera vraisemblablement déjà installé sur votre ordinateur. Si vous avez un message d'erreur lors du lancement de Wamp à cause d'une DLL manquante, vous pouvez télécharger le package redistribuable de Visual C++ manquant ici.
Extrayez l'archive dans le répertoire d'installation de WampServer, sous-répertoire bin/php/phpX.Y.Z (X.Y.Z étant la version de PHP à installer). Allez dans le dossier de la version précédente de PHP (appelons-la U.V.W) préinstallée dans WampServer, et copiez les fichiers suivants :
- php.ini
- phpForApache.ini
- wampserver.conf
Collez ces fichiers dans le répertoire de la nouvelle version de PHP. Ouvrez les fichiers .ini et remplacez la chaîne U.V.W
(correspondant à l'ancienne version) par X.Y.Z
(correspondant à la nouvelle version) avec un coup de Rechercher et remplacer.
Quittez puis relancez WampServer. Cliquez sur l’icône près de l'horloge avec le bouton gauche, allez dans PHP , Version , puis sélectionnez la version que vous venez d'installer. WampServer recharge les paramètres, et c'est tout bon !
Pour Apache , télécharger votre version ici et copier les fichiers :
- conf/httpd.conf
- conf/extra/httpd-vhosts.conf
- wampserver.conf
Pour phpMyadmin , télécharger votre version ici et copier les fichiers :
- config.inc.php
Attention, phpMyAdmin s'installe dans apps/ et non dans bin/. De plus, vous devrez modifier le fichier alias/phpmyadmin.conf et wampmanager.conf de WampServer pour y rechercher et remplacer le numéro de version de phpMyAdmin.
N'oubliez pas d'éditer les fichiers copiés et rechercher/remplacer les numéros de version.
Je vous invite à considérer les deux alternatives suivantes, respectivement à MySQL et phpMyAdmin : MariaDB (qui est open source) et SQL Buddy (qui fait moins usine à gaz). Ils s'installent et s'utilisent de la même façon que MySQL et phpMyAdmin.
Créer des vhosts
La création de virtual hosts vous permettra de gérer plus facilement votre environnement de travail si vous développez plusieurs projets à la fois.
Pour ajouter un virtual host, éditer le fichier C:\Program Files\Wamp\bin\apache\apachex.y.z\conf\extra\httpd-vhosts.conf. Ajouter un bloc tel que celui-ci :
<VirtualHost *:80>
ServerAdmin VOTRE_ADRESSE_EMAIL
DocumentRoot "CHEMIN_ABSOLU_VERS_DOSSIER_DE_DEV"
ServerName NOM_DE_DOMAINE_SOUHAITE
ErrorLog "logs/NOM_DE_DOMAINE_SOUHAITE.error.log"
CustomLog "logs/NOM_DE_DOMAINE_SOUHAITE.access.log" common
</VirtualHost>
Bien sûr, ceci constitue simplement la base ; si vous souhaitez mettre en place le HTTPS (bien que l'intérêt soit limité sur un environnement de dev), vous pouvez remplacer le port 80 par le port 443, et ajouter les autres directives courantes pour la mise en place du HTTPS.
Quant au nom de domaine souhaité, vous pouvez indiquer ce que vous souhaitez. Généralement, on choisit NOM_PROJET.local, par exemple blog.local.
Nous allons maintenant éditer le fichier C:\Windows\System32\drivers\etc\hosts afin d'ajouter une entrée pour notre nom de domaine. Rajouter une ligne telle que celle-ci dans le fichier :
127.0.0.1 NOM_DE_DOMAINE_SOUHAITE
Ainsi, quand vous tenterez d'accéder à votre nom de domaine, votre ordinateur n'aura pas à effectuer de requête DNS : c'est votre ordinateur qui réceptionnera la requête, et Wamp qui la prendra en charge. Grâce au virtual host, Wamp saura dans quel dossier se trouvent les fichiers auxquels vous tentez d'accéder.
D'autres idées ?
Si vous avez d'autres suggestions pour étoffer cet article d'astuces concernant WampServer, n'hésitez pas à l'inscrire ou à poser une question dans les commentaires !