Blog de benji1000

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) :

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.

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é.

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.

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 !