Bonjour,
Wampserver 2.5 - Page d'accueil, menu Vos Projets et le besoin de Virtual HostIl ya eu un changement de concept dans WampServer 2.5 et il ya une bonne raison à ce changement !
Avec WampServer 2.5, il est maintenant fortement recommandé de créer un hôte virtuel pour chacun de vos projets, même si vous les mettez dans la structure \wamp\www\sous-dossier.
La page d'accueil de WampServer (\wamp\www\index.php) nécessite maintenant que vous ayez créé un hôte virtuel pour tous vos projets et ne fonctionnera correctement que si vous le faites.
Historique WampserverAfin de rendre la vie plus facile pour les débutants pour apprendre PHP, Apache et MySQL avec Wampserver, il était demandé de créer des sous-dossiers pour chacun des projets sous le dossier \wamp\www\
wamp
|-- www
|-- Projet1
|-- Projet2
|-- etc
Ces sous-dossiers (projet) étaient alors vus comme des liens dans la page d'accueil de WampServer sous un menu appelé « Vos projets » et ces liens contenaient "/localhost/sous-dossier".
Acceptable uniquement pour des tutoriels simplesCe « rendu de vie facile » pour le débutant complet est parfaitement acceptable, par exemple pour ceux qui suivent des tutoriels pour apprendre le codage PHP.
Mais il n'a jamais été destiné à être utilisé pour l'élaboration d'un site Web réel ou que vous voulez transférer plus tard sur votre serveur hébergé en direct.
En fait, utilisé comme ça, ce mécanisme a souvent causé des problèmes dans la configuration des sites réels qui ne correspondaient plus à la configuration du site en développement.
Remarque : Dans les explications suivantes tous les (http://) sont entre parenthèses ceci pour éviter que ce soit transformé en url par le forum.Lancer ses sites locaux par (http://localhost/projet1/) ou (http://localhost/projet2/) n'est
ABSOLUMENT PAS une bonne solution, c'est même quelque chose à bannir totalement et définitivement et c'est bien pourquoi Wampserver 2.5 n'a plus cette « fonctionnalité ».
En effet, vous introduisez un niveau supplémentaire "localhost/" dans les url d'accès à vos sites locaux ce qui fait que beaucoup de variables prédéfinies par le serveur HTTP, par exemple des éléments du tableau $_SERVER['xxx'] n'auront pas les bonnes valeurs.
Par exemple, pour un projet wamp/www/mon-projet/
Avec l'appel tel qu'il
devrait être : (http://mon-projet/) voici les valeurs de quelques éléments prédéfinis
$_SERVER['HTTP_HOST'] = mon-projet
$_SERVER['SERVER_NAME'] = mon-projet
$_SERVER['DOCUMENT_ROOT'] =C:/wamp/www/mon-projet
Et voilà quels sont les mêmes éléments prédéfinis avec (http://localhost/mon-projet/)
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] =C:/wamp/www
Vous pouvez voir, entre autres, que le
chemin d'accès au dossier racine du projet ($_SERVER['DOCUMENT_ROOT']) n'est pas le bon chemin. et, en plus, ce sera TOUJOURS C:/wamp/www quel que soit les projet lancé de cette manière.
Ces valeurs erronées vont - à coup sûr - induire des erreurs incompréhensibles avec des CMS ou applications web que vous ajouterez à vos projets, par exemple Wordpress ou Joomla ; mais ce ne sont pas les seules.
Vos « projets » sont hébergés chez "localhost" tout comme les sites « réels » sont hébergés chez "ovh", "free", "1and1", "gandi" ou autres et, pour accèder à ces sites réels , vous ne tapez pas (http://gandi/wampserver.com) mais bien (http://wampserver.com)
Il faut donc définir quelles sont les caractéristiques et la localisation de vos projets par rapport à leurs hébergement chez "localhost".Sans définition de VirtualHost, (http://localhost/mon-projet/) fonctionne parce que ce nom "localhost" est défini en tant nom de site et qu'une adresse d'accès lui est donnée et que le dossier /mon-projet/ est considéré comme un « niveau » secondaire du site localhost. Ceci est effectué par le fichier "C:\Windows\System32\drivers\etc\hosts" (sans extension) qui donne les correspondances entre les adresses IP et les noms de site. Après installation du serveur, ce fichier
doit contenir, comme ligne active (C'est-à-dire sans # au début de ligne), au moins :
127.0.0.1 localhost
(La séparation entre l'adresse IP et le nom peut être un ou plusieurs espaces ou tabulations)
Si votre système supporte IPv6 (En principe, par défaut depuis Windows 7), il faut y ajouter l'adresse IPv6, donc :
127.0.0.1 localhost
::1 localhost
Comment créer des VirtualHost avec WampserverEn fait, cela doit fonctionner exactement de la même manière que pour tout serveur Apache d'un hébergeur, avec quelques petites différences quant aux autorisations d'accès.
Il y a trois étapes pour créer votre premier VirtualHost Apache, et seulement deux si vous en avez déjà défini un (ou plusieurs).
1. Créez la définition du VirtualHost
2. Ajoutez votre nouveau nom de domaine dans le fichier HOSTS.
3. Supprimez la ligne dans le fichier httpd.conf qui inclut le fichier de définition de hôtes virtuels.
Étape 1 : Créer la définition du VirtualHost
Editez le fichier appelé `httpd-vhosts.conf` qui pour WampServer est dans
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Les numéros de version Apache peuvent différer, faites travailler vos petites cellules grises{©Hercule Poirot} avant de continuer)---
Attention : Si c'est la
première fois que vous modifiez le fichier httpd-vhosts.conf,
supprimez totalement l'exemple de code par défaut, non seulement il n'est d'aucune utilité, mais, si vous le laisser, il va créer des problèmes ---
Supposons que nous voulons créer une définition pour un site appelé projet1 qui est dans
\wamp\www\projet1
Très important, il faut d'abord s'assurer que localhost fonctionne toujours - Il n'est pas défini comme VirtualHost par défaut -, donc, si c'est la première définition de VirtualHost nous allons mettre dans ce fichier et en premier :
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot C:/wamp/www
<Directory "C:/wamp/www/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require local
</Directory>
</VirtualHost>
Maintenant, nous définissons notre projet, et ce bien sûr, vous le faisons pour chacun des projets par un VirtualHost différent.
<VirtualHost *:80>
DocumentRoot "C:/wamp/www/project1"
ServerName project1
ServerAlias www.project1
<Directory "C:/wamp/www/project1/">
AllowOverride All
Require local
</Directory>
</VirtualHost>
Nota : Chaque VirtualHost a sa propre définition de
DocumentRootPetit « à côté »Comment les hôtes virtuels travaillent dans Apache : La première définition de ce fichier sera également le site par défaut, de sorte que si le nom de domaine utilisé dans le navigateur ne correspond à aucun domaine défini, c'est localhost, le premier domaine dans le fichier, qui sera servi par exemple par une tentative de hack sur votre adresse IP.
Donc, nous nous assurons que la sécurité Apache pour ce domaine ** EST TOUJOURS À **
Require local
tout piratage occasionnel à partir d'une adresse externe recevra une erreur et ne pourra pas entrer sur le PC, mais si vous orthographiez mal un domaine vous verrez la page d'accueil WampServer (ou un domaine externe), parce que vous êtes sur le même PC que WampServer et donc `local`.
Étape 2 :
Ajouter votre nouveau nom de domaine dans le fichier HOSTS.
Maintenant, nous devons ajouter le nom de domaine que nous avons utilisé dans la définition de l'hôte virtuel dans le fichier HOSTS de telle sorte que Windows saura où le trouver. C'est similaire à la création d'un enregistrement DNS A, mais il n'est visible dans ce cas que sur ce PC spécifique.
Éditez `C:\windows\system32\drivers\etc\hosts`
Le fichier n'a pas d'extension et doit absolument rester sans extension. Méfiez-vous du bloc-notes (Notepad), car il peut essayer d'ajouter une extension `.txt` si vous n'avez pas de meilleure éditeur. Je vous suggère de télécharger Notepad++, c'est gratuit et un très bon éditeur.
C'est aussi un fichier protégé que vous devez modifier avec des privilèges d'administrateur, il faut donc lancer l'éditeur avec l'option « Exécuter en tant qu'administrateur »
Explications Run as Administrator (En Anglais)Après édition et ajout du domaine projet1, le contenu du fichier devrait ressembler à ça :
127.0.0.1 localhost
127.0.0.1 projet1
::1 localhost
::1 projet1
Que l'on peut très bien regrouper sur les mêmes lignes, à condition de ne pas mettre plus de huit noms de serveur par ligne :
127.0.0.1 localhost projet1
::1 localhost projet1
Notez que vous devez avoir les définitions pour l'adresse `127.0.0.1` de bouclage IPv4 et aussi l'adresse `:: 1` de bouclage IPv6. Apache supporte IPv6 depuis la version 2.2.19 et le navigateur va utiliser IPv4 ou IPv6, ou les deux. Je n'ai aucune idée de comment il décide quel type utiliser, mais il peut utiliser IPv6 et, l'adresse locale IPv6 n'est pas définie, il peut y avoir des problèmes.
Maintenant, nous devons indiquer à Windows de rafraîchir le cache des noms de domaine (Sinon, il faudra redémarrer).
Ouvrir une fenêtre de commande en tant qu'Administrateur
Explications Run as Administrator (En Anglais) et tapez les deux commandes ci-dessous, en attendant la fin de chacune :
net stop Dnscache
net start Dnscache
Cela oblige Windows à effacer le cache des noms de domaine puia à le recharger. En rechargeant Windows relira le fichier HOSTS et le nouveau domaine `project1` sera connu.
Étape 3 : Décommenter la ligne dans le fichier httpd.conf qui inclut le fichier de définition des hôtes virtuels.
Éditez votre fichier httpd.conf, utilisez les menus de wampmanager.exe pour vous assurer que vous modifiez le bon fichier. (Wampmanager->Apache->httpd.conf)
Trouvez ces ligne dans le fichier httpd.conf
# Les hôtes virtuels
#Include conf/extra/httpd-vhosts.conf
Et, pour décommenter, il suffit de retirer le `#` de la ligne Include pour obtenir :
# Les hôtes virtuels
Include conf/extra/httpd-vhosts.conf
Pour activer ce changement en exécutant Apache nous devons maintenant arrêter et redémarrer le service Apache.
Wampmanager -> Apache -> Service -> Redémarrer le service
Maintenant, si l'icône Wampmanager dans la zone de notification ne repasse pas au VERT, cela signifie que vous avez probablement fait une erreur dans le fichier wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf.
Si c'est le cas, bonne chose, il existe un mécanisme utile détecter ces erreurs. Il utilise une caractéristique de l'exécutable Apache (httpd.exe) pour vérifier ses fichiers de configuration et rapporter les erreurs par nom de fichier et numéros de ligne.
Ouvrez une fenêtre de commande, toujours en tant qu'administrateur
(La commande CD est à modifier en conséquence de votre installation)
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Donc, corriger les erreurs et retester de nouveau jusqu'à ce que vous obteniez Syntax OK
c:\wamp\bin\apache\apache2.4.9\bin>httpd -t
Syntax OK
Maintenant, il y a une chose de plusIl y a en fait deux nouveaux éléments de sous-menu sur le système de menu Wampmanager. Un appelé
« My projets » qui est activée par défaut.
Et un second, appelé
« My Virtual Host » , qui n'est pas activé par défaut.
Dans « My projets » seront inscrits touts les sous-répertoires de \wamp\www\ avec un lien pour lancer le site dans ce sous-répertoire.
Comme je l'ai dit plus tôt, il lance « project1 » et pas « localhost/project1 ». Afin que ce soit un lien , nous devons créer une définition VirtualHost pour qu'il soit pssible de lancer ce site dans votre navigateur. Sans la définition de VirtualHost, cela lancera une recherche sur le web avec le nom du site en tant que mot clé ou tout simplement retournera un site introuvable.
L'item « My Virtual Hosts » du menu est un peu différent. Il cherche le fichier qui est utilisé pour définir les hôtes virtuels que nous venons de modifier et crée des liens de menu pour chaque paramètre ServerName qu'il trouve.
Cela peut sembler un peu déroutant, car une fois queavons créé une définition VirtualHost pour les sous-répertoires de \wamp\www certains éléments apparaissent à la fois dans le menu « My Projects » et le menu « My Virtual Hosts ».
Comment puis-je activer cette autre menu « My Virtual Hosts » ? C'est peut-être un peu prématuré, mais je suppose que c'est maintenant le bon moment de tout vous dire.(*)
- Faites une sauvegarde de \wamp\wampmanager.tpl juste au cas où vous faites une erreur, c'est un fichier très important.
- Modifier le fichier \wamp\wampmanager.tpl
- Trouver ce paramètre '; WAMPPROJECTSUBMENU', dans la section [Menu.Left].
- Ajouter ce nouveau paramètre '; WAMPVHOSTSUBMENU' avant ou après le '; WAMPPROJECTSUBMENU' paramètre pour obtenir :
Type: item; Caption: "${w_localhost}"; Action: run; FileName: "${c_navigator}"; Parameters: "[localhost];; Glyph: 5
;WAMPVHOSTSUBMENU
;WAMPPROJECTSUBMENU
- Enregistrez le fichier.
- Maintenant, clic-droit l'icône de wampmanager, et sélectionnez « Refresh ». Si cela n'ajoute pas le sous-menu, redémarrez wampmanager.
Note importanteLe nouveau menu ne s'affiche que si vous avez déjà au moins un VirtualHost défini ! Sinon, vous ne verrez aucune différence jusqu'à ce que vous définissez un VirtualHost.
Maintenant, voici le prolongement logique des VirtualHostVous pouvez maintenant déplacer code de votre site web complètement en dehors de la structure \wamp\ simplement en changeant les paramètres DocumentRoot et <Directory dans la définition de VHOST. Ainsi, par exemple, vous pourriez faire ceci :
Créez un dossier sur le disque où est WAMP ou sur tout autre disque ou partition (attention : pour les lecteurs réseau, c'est nettement plus compliqué)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Vous copiez maintenant code de votre site, ou vous commencez à le créer dans le répertoire D:\websites\example.com\www\ et vous définnissez votre VHOST comme ceci :
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www/">
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Puis on va ajouter ce nouveau domaine de développement dans le fichier HOSTS :
127.0.0.1 localhost
:: 1 localhost
127.0.0.1 project1
:: 1 project1
127.0.0.1 example.dev
:: 1 example.dev
ou
127.0.0.1 localhost project1 example.dev
::1 localhost project1 example.dev
NOTE : Nom de Domaine. Ce n'est pas du tout une bonne idée d'utiliser un ServerName ou ServerAlias qui est le même que votre
nom de domaine (*) réel. En effet, lorsque l'on demande une url dans le navigateur, ce sont d'abord les DNS local (fichier hosts, puis cache local) qui sont lus et si une correspondance est trouvée, c'est le site local qui sera chargé ; il sera donc impossible d'accèder au site réel.
Une bonne pratique, est de donner le même nom mais sans le tld, donc, par exemple, monsite.net en réel et monsite en local.
AUSSI : Ce site est accessible à partir de l'Internet dans les définitions de serveur virtuel (Require all granted), ce changement ne s'appliquera qu'à ce site et à aucun autre. Très utile pour permettre à un client internet d'afficher vos modifications sans avoir à les copier sur le serveur réel. Cela signifie que si on passe Wampserver Online SEULEMENT ce site local sera accessible de l'extérieur puisque tous les autres, localhost compris, sont avec Require local.
Il y a aussi quelques modifications de la configuration de PHP, qui ne s'appliquera QUE pour ce site local. Ce peut être très utile pour un site ayant besoin d'exigences spécifiques, contrairement à tous les autres sites que vous gérez.
Éventuellement, on pourrait penser que ce site est mal écrit et que seulement pour celui-ci, nous masquons les erreurs. Il existe des sites comme cela et les gens veulent toujours à les maintenir
mal. Mais cela montre que nous pouvons avoir tout un tas de paramètres spécifiques qui ne s'appliquent quà un site local et non pas globalement à tous les sites virtuels s'exécutant sur WampServer.
(*) ServerName est un nom de domaine, même en local et doit respecter des règles. Un nom de domaine doit comporter entre 2 et 63 caractères. Les caractères autorisés sont les lettres, les chiffres et le signe "-". Le signe "-" est autorisé n'importe où sauf en première ou en dernière position.
Les accents (àâäéèêëôöùûüîï) et les lettres infléchies (ç) sont autorisés uniquement pour les noms de domaine avec l'extension .com, .net, .fr et eu. et, comme c'est relativement récent, le problème est que tous les serveurs, hébergeurs, et navigateurs ne les prennent pas en compte.
Mais, dans TOUS LES CAS, le tiret-bas (underscore) n'est pas autorisé dans les noms de domaine. Pour plus d'informations (Mais c'est assez rébarbatif), voir la Internationalized Domain Names in Applications, RFC 5890 et aussi la RFC 1034.
Cette contribution est une compilation des informations de RiggsFolly du forum Anglais et d'Otomatic du forum Français---------------------------------------------------
(*)Il fallait absolument sortir une nouvelle version de Wampserver, non seulement pour faire oublier la catastrophe de Wampserver 2.4, mais pour mettre à disposition les dernières versions Apache PHP et MySQL. Et... je n'ai pas eu le temps de terminer tout ce que je voulais faire (Ce n'est d'ailleurs pas tout à fait fini...) comme ajouter trois directives avec valeurs par défaut dans wampmanager.conf :
suppressLocalhost = "on"
VirtualHostSubMenu = "off"
ProjectSubMenu = "off"
avec un sous-menu "Settings" au clic-droit sur Wampmanager pour passer "on" ou "off" ces directives, une par une.
- suppressLocalhost = "on" pour les irréductibles du "(http://localhost/project1/)" qui, en le passant "off", ajoute le niveau "localhost" dans les appels, non seulement sur le menu "Vos Projets" de la page d'accueil, mais également dans le sous-menu "My Projects".
- ProjectSubMenu = "off" pour valider ou dévalider le sous-menu "My Projects"
- VirtualHostSubMenu = "off" pour valider ou dévalider le sous-menu "My Virtual Hosts" et également un menu "My Virtual Hosts" dans la page d'accueil.