Les explications qui suivent restent valables pour Windows XP Home SP3 (pas essayé avec Vista) et quel que soit le nombre de « sites » locaux.
Cette procédure permet que sous WampServer 2, les sites locaux soient vus de manière similaire aux mêmes sites chez un ou plusieurs hébergeurs (Free et 1and1 en ce qui me concerne) - c'est-à-dire pour que les différentes variables, par exemple :
soient gérées de la même manière en local et en réel, ce qui n'est pas complètement le cas de la configuration Wamperver par défaut, principalement pour le fichier www/index.php.
Je prends l'exemple de 3 de mes sites : (Bien sûr, exemple à modifier en fonction du nom de vos sites)
- Sites locaux Il faut créer, dans le dossier Wamp\www autant de répertoires que de sites locaux, par exemple, avec Wamp installé sur G:\Wamp : G:\Wamp\www\aviatechno\ G:\Wamp\www\le.pointu\ G:\Wamp\www\phottello\ Nota : Il est IMPÉRATIF que les noms des dossiers des sites locaux soient différents des noms des sites réels. C'est dans ces répertoires que seront mis les fichiers html et php des sites afférents.
- 1 - Modifier le fichier %windir%\System32\Drivers\etc\Hosts pour obtenir la ligne suivante (Méthode préconisée) :
Les contenus de droite sont les exactes copies des noms des dossiers des sites locaux situés dans G:\Wamp\www\ Nota : localhost doit être en premier.
- 2 - Ouvrir le fichier Wamp\bin\apache\apache2.x.y\conf\httpd.conf Nota : La définition des « Virtual Hosts » ne se fait plus directement dans le fichier httpd.conf comme dans les version précédentes d'Apache, mais dans le fichier Wamp\bin\apache\apache2.x.y\conf\extra\httpd-vhosts.conf.
Décommenter (Supprimer le # de début de ligne) la ligne Include... :
# Virtual hosts Include conf/extra/httpd-vhosts.conf
- 2.1 - Ouvrir le fichier Wamp\bin\apache\apache2.x.y\conf\extra\httpd-vhosts.conf Remplacer tout le contenu du fichier par : #------- Début du fichier ---- # # Virtual Hosts #
<VirtualHost *:80> DocumentRoot G:/Wamp/www/le.pointu ServerName le.pointu </VirtualHost> #------- Fin du fichier ---- Nota : ServerName localhost doit être en premier et l'ordre correspondre à celui du fichier Hosts.
À partir de ces modifications (Ne pas oublier d'enregistrer les fichiers modifiés), si on lance Wampserver et que dans le navigateur on lance un site local dans la barre de navigation, par exemple [aviatechno] (le "/" final est obligatoire), on ouvrira bien le site local et, dans ce cas, le contenu des variables PHP sera similaire à celui des mêmes variables sur le site réel.
En revanche, si on lance Localhost depuis l'icône de Wampserver, puis dans le menu du fichier index.php de Wampserver, par exemple aviatechno, on obtiendra : [localhost] ce qui ajoute un niveau de plus (localhost/) par rapport au site réel et fait que les variables susmentionnées n'ont pas un contenu similaire à celui du site réel.
Donc, - 3 - dans le fichier Wamp\www\index.php modifier la ligne : $projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>'; par $projectContents .= '<li><a href="['.$file.'">'.$file.'<];'; //[modif oto] http:// après href="
- Sites locaux Il faut créer, dans le dossier Wamp\www autant de répertoires que de sites locaux, par exemple, avec Wamp installé sur c:\Wamp : c:\Wamp\www\ c:\Wamp\www\test\
- 1 - Modifier le fichier %windir%\System32\Drivers\etc\Hosts (j'ai XP) pour obtenir la ligne suivante (Méthode préconisée) :
127.0.0.1 localhost test
ou la ligne suivante
127.0.0.1 localhost 127.0.0.1 test
- 2.1 - Ouvrir le fichier Wamp\bin\apache\apache2.x.y\conf\extra\httpd-vhosts.conf Remplacer tout le contenu du fichier par : #------- Début du fichier ---- # # Virtual Hosts #
<VirtualHost *:80> DocumentRoot G:/Wamp/www/test ServerName test </VirtualHost>
#------- Fin du fichier ----
- 3 - dans le fichier Wamp\www\index.php modifier la ligne : $projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>'; par $projectContents .= '<li><a href="['.$file.'">'.$file.'<];'; //[modif oto] http:// après href="
et ensuite j'ai verifié le chemin pour faire fonctionner les includes Php et url rewriting dans mon fichier chemin.php placé dans le répertoire [localhost]
<?php print $_SERVER['DOCUMENT_ROOT'];
?>
Il me renvoit C:/wamp/www/ alors que je devrais avoir C:/wamp/www/test
Il me semble que cette procédure ne change pas le fait que le chemin réel reste toujours C:/wamp/www/ sans jamais tenir compte des répertoires.
C'est exactement le même problème lorsqu'on crée un Alias, on le voit bien sur la page [localhost] on clique dessus et il nous montre ce qu'il y a dans le repertoire de l'Alias mais le chemin reste toujours C:/wamp/www/ et les includes Php et url rewriting ne fonctionnent pas.
Je ne suis pas assez performant pour dire que c'est un bug de Wamperserver mais normalement lorsqu'on crée un Alias il devrait avoir son chemin réel et non pas C:/wamp/www/
À priori, je dirais qu'il y a un problème dans votre configuration de Wampserver, peut-être à cause des modifications des fichiers .htaccess.
Le fichier qui m'affiche le contenu de $_SERVER['DOCUMENT_ROOT'] est situé à : racine/essais/fichier_essais.php
Essais effectués sur trois sites dont le contenu est identique :
- 1 - Chez free.fr Site [aviatechno.free.fr] DOCUMENT_ROOT : /mnt/138/sda/3/4/aviatechno
- 2 - Chez 1and1 Site [aviatechno.info] DOCUMENT_ROOT : /kunden/homepages/3/d141342680/htdocs/aviatechno
- 3 - En local avec Wampserver Site [aviatechno] DOCUMENT_ROOT : G:/wamp/www/aviatechno
Bien sûr, Wampserver a été configuré comme je le décris au début de cette enfilade et, dans ce cas, la valeur de DOCUMENT_ROOT est la bonne valeur pour tous les sites, qu'ils soient réels ou virtuels.
Mon site est déja en ligne, il fonctionne parfaitement avec apache 2 et php 5, c'est en local avec wampserver que ça ne fonctionne pas.
Merci beaucoup pour votre temps avec vos test en ligne, mais ce sont ceux en local qui m'interesse.
Ce qui m'interesse c'est de connaitre la réponse du localhost quand votre fichier est placé dans un répertoire et surtout pas a la racine www
Pour simplifier imaginons que en local vous avez un répertoire nomé "test" donc www/test/essais_fichier.php
Votre machine vous répond wamp/www/test et moi wamp/www/ !!! sans le répertoire test !!! et pourtant j'ai effectué votre procédure multisite. (et pas de htaccess dans /test/ juste un simple fichier qui trace le localhost)
Apache me rend fou ! il me reste plus qu'a me déguiser en indien et danser devant le Pc pour que ça marche :-)
Dans tous les cas $_SERVER['DOCUMENT_ROOT'] donne la même valeur : G:/wamp/www/aviatechno
Autres essais : $_SERVER['HTTP_HOST'] done : aviatechno $_SERVER[SERVER_NAME'] donne : aviatechno
$_SERVER['SCRIPT_FILENAME'] donne le chemin complet du fichier en cours d'exécution : G:/wamp/www/aviatechno/essais/test1/essais_fichier.php tout comme la variable __FILE__
Meme la dance déguisé en Indien n'a pas marché :-) :-)
J'obtiens toujours C:/wamp/www/ sans les répertoires derrière !!!
Je peux plus perdre de temps.... je vais continué le dévelloppement du site directement en ligne dans un repertoire test avec l'utilisation du ftp intensif ;-).
Un très grand merci pour votre aide et pour votre temps
Intéressant votre tuto. J'essaie de comprendre. Vous avez donc 3 DNS différents, un serveur avec 3 dossiers différents reliés avec leurs DNS respectif.
Si j'ai bien saisie, va falloir que je fasse des essais
Bonjour à tous, je voulais remercier Otomatic pour cet article sur la mise au point en local de plusieurs sites avec Wampserver 2.0. Il m'a permis de comprendre et résoudre le problème rencontré quand on lance "Localhost" depuis l'icône de Wampserver.
Comme je veux aussi pouvoir accéder au site local du PC à partir d'autres PC du même réseau local, j'ai ajouté dans le fichier "httpd.conf" un bloc "Directory" pour autoriser les autres PC à accéder à ce site sans accéder à la page de wampserver
<Directory "c:/wamp/www/dokuwiki"> Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Allow from all </Directory>
j'ai beaucoup de mal a suivre votre tuto a la lettre manque d'expérience , mai la motivation est la , Est qu'une personne aurai la gentillesse de m'aider sous msn ou teamspeak ou mumble , Merci d'avance pour cette demande qui n'est pas des moindres
un petit up pour ce super tuto.... très utile.....
Ottomatic.... MERCI ;=)
Juste une question, j'ai du mal a comprendre la manip "3" "- 3 - dans le fichier Wamp\www\index.php modifier la ligne : $projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>'; par $projectContents .= '<li><a href="['.$file.'">'.$file.'<];'; //[modif oto] http:// après href="
Ayant plusieurs sites, j'ai appliqué la procédure ci-dessus et tout fonctionne parfaitement dans l'environnement de test.
Les sites locaux sont vus de manière similaire que chez mon hébergeur (FREE) y compris les données $_SERVEUR. Ce qui était le but recherché.
Pour obtenir ce résultat, les dossiers correspondant aux sites doivent être placés dans le dossier www.
Comment faut-il faire, si je veux arriver au même résultat mais en utilisant les alias et en laissant les dossiers de stockage de mes sites en dehors de l'arborescence Wampserver.
Merci de vos conseils.
Cordialement.
Michle38
Wampserver 2.0.I : Apache 2.2.11 - PHP 5.2.11 - MySQL 5.1.36 - PhPMyAdmin 3.2.0.1 - Windows XP Pro SP3