J'installe Wamp Server sur un autre ordinateur pour exécuter une base de données et une interface utilisateur de taille moyenne. J'ai réussi à bloquer IIS et à router le serveur vers Localhost: 8080. Mais chaque fois que j'essaie d'accéder à l'un de mes projets à partir de la page d'accueil de localhost, dans le fichier www; Je suis redirigé vers une erreur de page non trouvée.
Lorsque je survole les liens, le répertoire apparaît toujours "http: // ProjectFolderNameHere /". quand il est supposé être "http: // LocalHost: 8080/ProjectFolderNameHere /". Que puis-je faire pour que les liens fonctionnent correctement?
Ma machine fonctionne sous Windows 7 Édition familiale 64 bits et Microsoft IIS est déjà désactivé.
Vous pouvez faire presque tout depuis un utilitaire fourni avec WAMPServer.
Créez un dossier à l'intérieur pour contenir votre projet.site. Cela peut être dans le répertoire C:\wamp\www\
ou dans un dossier complètement séparé comme C:\websites
.
Créez un dossier à l’emplacement que vous avez choisi, EG C:\websites\project1\www
ou sous le c:\wamp\www\project1\www
Maintenant, ouvrez localhost wampmanager->localhost
et cliquez sur le lien Add a Virtual Host
sous la section TOOLS de la page d'accueil.
Vous verrez une page comme celle-ci:
Remplissez les champs comme spécifié par les instructions ci-dessus chaque champ
La configuration de l'hôte virtuel aura été créée pour vous.
Maintenant, vous devez redémarrer le cache DNS. Vous pouvez le faire depuis les menus de wampmanager comme ceci right click wampmanager->Tools->Restart DNS
. Le cache DNS sera redémarré, puis Apache sera également arrêté et redémarré. Lorsque l'icône de wampmanager redevient verte, tout est terminé.
Vous devez maintenant créer un simple fichier index.php
ou installer votre site dans le dossier que vous avez créé ci-dessus.
En supposant que votre VH s'appelle project.dev
, vous devriez voir ce nom sous la section Vos hôtes virtuels de la page d'accueil WAMPServer.
Vous pouvez lancer le site à partir de ce menu ou simplement utiliser le nouveau nom de domaine dans la barre d'adresse EG project1.dev
et le lancement du site.
Il y a eu un changement de concept dans WampServer 2.5 et supérieur et il y a une bonne raison pour ce changement!
Dans WampServer, il est FORTEMENT encouragé de créer un hôte virtuel pour chacun de vos projets, même si vous les gérez dans une structure \wamp\www\subfolder
.
Documentation sur les hôtes virtuels
La page d'accueil WampServer (\wamp\www\index.php
) s'attend maintenant à ce que vous ayez créé un hôte virtuel pour tous vos projets et ne fonctionnera donc correctement que si vous le faites.
Historique
Afin de faciliter la vie des débutants qui utilisent WampServer pour apprendre PHP Apache et MySQL, il a été suggéré de créer des sous-dossiers dans le dossier \wamp\www\
.
wamp
|-- www
|-- Chapter1
|-- Chapter2
|-- etc
Ces sous-dossiers s'afficheraient alors sous forme de liens dans la page d'accueil WampServer dans un menu appelé "Vos projets" et ces liens contiendraient un lien vers localhost/subfoldername
.
Acceptable uniquement pour les tutoriels simples
Cela simplifiait la vie du débutant complet et était parfaitement acceptable, par exemple, pour ceux qui suivent des tutoriels d'apprendre le codage PHP. Cependant, il n'a jamais été conçu pour être utilisé lors du développement d'un site Web réel que vous voudriez copier par la suite sur votre serveur hébergé en direct. En fait, si vous utilisiez ce mécanisme, cela posait souvent des problèmes car la configuration des sites dynamiques ne correspondait pas à votre configuration de développement.
Le problème pour le développement de sites Web réels.
La raison en est bien sûr que le paramètre DocumentRoot par défaut pour wamp est
DocumentRoot "c:/wamp/www/"
quel que soit le nom de votre sous-dossier. Cet élément qui utilisait souvent le code PHP qui interrogeait la structure ou votre site recevait des informations différentes lors de son exécution sur votre serveur de développement WampServer. en haut de la hiérarchie de fichiers du site Web. Ce type de code existe dans de nombreux frameworks et CMS, par exemple WordPress et Joomla etc.
Par exemple
Disons que nous avons un projet appelé project1 dans wamp\www\project1
et que nous l'exécutons de manière incorrecte en tant que localhost/project1/index.php
Voici ce que quelques-uns des PHP commandes en question:
$_SERVER['HTTP_Host'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Maintenant, si nous avions correctement défini ce site à l'aide d'une définition d'hôte virtuel et que nous l'avons exécuté sous le nom http://project1
, les résultats sur le site de développement WAMPServer correspondront à ceux reçus dans un environnement hébergé en direct.
$_SERVER['HTTP_Host'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Maintenant, cette différence peut sembler triviale au début, mais si vous utilisiez un framework tel que WordPress ou l'un des CMS tels que Joomla, par exemple, cela peut et pose des problèmes lorsque vous déplacez votre site sur un serveur actif.
En fait, cela devrait fonctionner pratiquement de la même manière sur tous les serveurs Apache Windows, à la différence près que vous pouvez trouver les fichiers de configuration Apache.
Il existe 3 étapes pour créer votre premier hôte virtuel dans Apache et seulement 2 si vous en avez déjà défini un.
Étape 1 , créez la ou les définitions d'hôte virtuel.
Editez le fichier appelé httpd-hosts.conf
qui héberge WampServer
\wamp\bin\Apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(les numéros de version d'Apache peuvent différer, engagez le cerveau avant de continuer)
Si c'est la première fois que vous éditez ce fichier, supprimez le code d'exemple par défaut, il ne sert à rien.
Je suppose que nous voulons créer une définition pour un site appelé project1 qui vit dans
\wamp\www\project1
Très important, nous devons d’abord nous assurer que localhost fonctionne toujours, c’est donc la première définition VHOST que nous mettrons dans ce fichier.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Nous définissons maintenant notre projet: vous le ferez bien sûr pour chacun de vos projets lorsque vous en lancerez un nouveau.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
REMARQUE: Chaque hôte virtuel doit avoir sa propre définition DocumentRoot
. Il existe également de nombreux autres paramètres que vous pouvez ajouter à une définition d'hôtes virtuels. Consultez la documentation Apache.
Petit aparté
Fonctionnement des hôtes virtuels dans Apache: la première définition de ce fichier sera également le site par défaut. Par conséquent, si le nom de domaine utilisé dans le navigateur ne correspond à aucun domaine hébergé virtuellement défini, faire de localhost le premier domaine du fichier il le site qui est chargé si une tentative de piratage utilise simplement votre adresse IP. Donc, si nous nous assurons que la sécurité Apache pour ce domaine est TOUJOURS RÉGLÉE SUR
Require local
tout piratage occasionnel provenant d'une adresse externe recevra une erreur et n'entrera pas dans votre PC, mais si vous orthographiez mal un domaine, la page d'accueil de WampServer s'affichera, car vous êtes sur le même PC que WampServer et donc local
.
Étape 2 :
Ajoutez votre nouveau nom de domaine au fichier HOSTS. Nous devons maintenant ajouter le nom de domaine que nous avons utilisé dans la définition de l'hôte virtuel au fichier HOSTS afin que Windows sache où le trouver. Ceci est similaire à la création d'un enregistrement DNS A, mais il n'est visible dans ce cas que sur ce PC spécifique.
Éditer C:\windows\system32\drivers\etc\hosts
Le fichier n'a pas d'extension et devrait le rester. Faites attention au bloc-notes, car il peut essayer d’ajouter une extension .txt
si vous n’avez pas de meilleur éditeur. Je vous suggère de télécharger Notepad ++, son logiciel gratuit et un très bon éditeur.
Il s’agit également d’un fichier protégé. Vous devez donc le modifier avec les privilèges d’administrateur. Vous devez donc lancer votre éditeur à l’aide de l’option de menu Exécuter en tant qu’administrateur .
Le fichier hosts devrait ressembler à ceci lorsque vous avez terminé ces modifications
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Notez que vous devriez avoir des définitions ici pour l'adresse de bouclage IPV4 127.0.0.1
ainsi que pour l'adresse de bouclage IPV6 ::1
, car Apache est désormais compatible IPV6 et le navigateur utilisera IPV4 ou IPV6, ou les deux. Je ne sais pas du tout comment il décide lequel utiliser, mais il peut être utilisé si la pile IPV6 est activée et la plupart des systèmes d'exploitation Windows le font à partir de XP SP3.
Nous devons maintenant demander à Windows d’actualiser son cache de noms de domaine. Lancez à nouveau une fenêtre de commande à l’aide de l’option de menu Exécuter en tant qu’administrateur , puis procédez comme suit.
net stop dnscache
net start dnscache
Cela oblige Windows à vider son cache de nom de domaine et à le recharger. Lors du rechargement, le fichier HOSTS sera relu afin que le système connaisse maintenant le domaine project1
.
Étape 3 : supprimez la mise en commentaire de la ligne dans le fichier httpd.conf contenant le fichier de définition des hôtes virtuels.
Modifiez votre fichier httpd.conf, utilisez les menus de wampmanager.exe pour vous assurer de modifier le fichier correct.
Trouvez cette ligne dans httpd.conf
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
Et supprimez simplement le #
pour supprimer le commentaire de cette ligne.
Pour activer cette modification lorsque vous exécutez Apache, vous devez maintenant arrêter et redémarrer le service Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Maintenant, si l'icône WAMP dans la barre d'état système ne redevient pas VERTE, cela signifie que vous avez probablement commis une erreur dans le fichier \wamp\bin\Apache\apache2.4.9\conf\extra\httpd-hosts.conf
.
Si tel est le cas, il existe un mécanisme utile pour déterminer ce qui ne va pas. Il utilise une fonctionnalité de Apache exe (httpd.exe) pour vérifier ses fichiers de configuration et signaler les erreurs par nom de fichier et numéro de ligne.
Lancer une fenêtre de commande.
cd \wamp\bin\Apache\apache2.4.9\bin
httpd -t
Alors corrigez les erreurs et refaites le test jusqu'à ce que vous obteniez la sortie
Syntax OK
Maintenant, il reste encore une chose.
Il existe actuellement 2 nouveaux éléments de menu dans le système de menus de wampmanager. On a appelé 'Mes projets' qui est activé par défaut. Et un second, appelé 'Mes hôtes virtuels' , qui n'est pas activé par défaut.
"Mes projets" listera tous les sous-répertoires du répertoire\wamp\www et fournira un lien pour lancer le site dans ce sous-répertoire. Comme je l'ai dit plus tôt, il lance 'project1` et non pas' localhost/project1 '. Pour que le lien fonctionne, nous devons créer une définition d'hôte virtuel pour que ce lien lance réellement ce site dans votre navigateur. Sans la définition d'hôte virtuel, il est probable que Lancez une recherche Web sur le nom du site en tant que mot clé ou renvoyez simplement une condition de site non trouvé.
L'élément de menu "Mes hôtes virtuels" est un peu différent. Il recherche le fichier utilisé pour définir les hôtes virtuels (nous y arriverons dans une minute), crée des liens de menu pour chaque paramètre ServerName trouvé et crée un élément de menu pour chacun. Cela peut sembler un peu déroutant, car une fois que nous avons créé une définition d’hôte virtuel pour les sous-répertoires du dossier\wamp\www, des éléments apparaissent dans les menus "Mes projets" et "Mes hôtes virtuels".
Comment puis-je activer cet autre menu 'Mes hôtes virtuels'?
;WAMPPROJECTSUBMENU
, son dans la section '[Menu.Left]'.;WAMPVHOSTSUBMENU
avant ou après le paramètre ;WAMPPROJECTSUBMENU
.Grosse note Le nouveau menu n'apparaît que si des hôtes virtuels sont déjà définis! Sinon, vous ne verrez aucune différence jusqu'à ce que vous définissiez un VHOST.
Maintenant, si vous prenez cela pour son extension logique
Vous pouvez maintenant déplacer le code de votre site Web complètement en dehors de la structure de dossiers \wamp\
en modifiant simplement le paramètre DocumentRoot dans la définition de VHOST. Ainsi, par exemple, vous pouvez faire ceci:
Créez un dossier sur le disque wamp ou sur tout autre disque (méfiez-vous des lecteurs réseau, ils sont un peu plus compliqués)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Vous copiez maintenant le code de votre site dans ou commencez à le créer dans le dossier \websites\example.com\www
et définissez votre VHOST comme suit:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
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>
Ajoutez ensuite ce nouveau domaine de développement au 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
REMARQUE: Ce n’est pas une bonne idée d’utiliser un nom de serveur ou un nom de serveur (ServerAlias) identique à votre nom de domaine actif. En effet, si nous avions utilisé exemple.com comme nom de serveur, cela signifierait que nous ne pourrions plus obtenir sur le vrai site en direct depuis ce PC, comme cela dirigerait example.com vers 127.0.0.1, c’est-à-dire ce PC et non sur Internet.
AUSSI: Voir que j'ai permis l'accès à ce site à partir d'Internet à partir des définitions VHOST, cette modification s'appliquera uniquement à ce site et à aucune autre. Très utile pour permettre à un client de visualiser vos modifications pendant une heure environ sans avoir à les copier sur le serveur live. Cela signifie que nous devons éditer ce fichier manuellement pour activer ou désactiver cet accès plutôt que d'utiliser l'élément de menu Put Online/Offline de wampmanager.
De plus, j'ai ajouté quelques modifications à la configuration PHP, qui ne s'appliqueront à nouveau qu'à ce seul site. Très utile pour maintenir un site avec une exigence spécifique contrairement à tous les autres sites que vous maintenez. Je suppose que nous pouvons supposer, à partir des paramètres utilisés, que la page en cours d'exécution est longue, qu'elle est très mal écrite et qu'elle ne fonctionnera pas si des erreurs sont affichées sur le navigateur sans que la page ne soit gâchée. Croyez-moi, des sites comme celui-ci existent et les gens veulent toujours qu'ils soient mal entretenus . Mais cela signifie que nous devons seulement modifier ces paramètres pour ce site spécifique et non globalement pour tous les sites virtuels exécutés sur WampServer.
Je crois que c'est la meilleure solution:
Ouvrez index.php dans le dossier www et définissez
changer de ligne 30: $suppress_localhost = true;
à $suppress_localhost = false;
Cela garantira que le projet est préfixé avec votre nom/adresse IP hôte local.
Ouvrez index.php
dans le dossier www
et définissez
$suppress_localhost = false;
Ceci ajoutera http://localhost/
aux liens de votre projet.
Afin d’accéder au projet à partir de la page d’accueil, vous devez d’abord créer un hôte virtuel .
Le moyen le plus simple consiste à utiliser l'utilitaire Ajouter un hôte virtuel de Wamp.
Il suffit de suivre ces étapes:
<?php echo "<h1>Hello World</h1>"; ?>
Vous pouvez maintenant accéder aux projets à partir de la page d'accueil de localhost. Cliquez simplement sur le lien du projet et vous verrez "Hello World" imprimé sur votre écran.
Vous pouvez suivre toutes les étapes de @RiggsFolly, ce qui est vraiment une bonne réponse. Si vous ne voulez pas créer d’hôte virtuel et que vous voulez utiliser comme précédent localhost/example/ou quelque chose comme ça, vous pouvez utiliser answer de @Arunu.
Mais si vous rencontrez toujours des problèmes, utilisez cette méthode,
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://localhost' : '').$file.'">'.$file.'</a></li>';
J'espère que vous avez obtenu votre URL comme la version précédente du serveur Wamp.
Comment réparer les liens d'icônes brisées (blank.gif, text.gif, etc.)
Malheureusement, comme mentionné précédemment, le simple fait d'ajouter un hôte virtuel à votre projet ne résout pas les liens d'icône rompus.
Le problème:
WAMP/Apache ne modifie pas la référence de répertoire pour les icônes dans votre répertoire d'installation respectif. Il est réglé statiquement sur "c:/Apache24/icons" et 99,9% des utilisateurs d’installation d’Apache n’y résident pas. Surtout avec WAMP.
Le correctif:
Trouvez votre répertoire d'icônes Apache! Typiquement, il sera situé ici: "c: /wamp/bin/Apache/apache2.4.9/icons". Toutefois, votre kilométrage peut varier en fonction de votre installation et si votre version d'Apache est différente, votre chemin sera également différent. \
Ouvrez httpd-autoindex.conf dans votre éditeur favori. Ce fichier peut généralement être trouvé ici: "C:\wamp\bin\Apache\apache2.4.9\conf\extra\httpd-autoindex.conf". Encore une fois, si votre version d'Apache est différente, ce chemin sera également différent.
Trouvez cette définition (généralement située près du haut du fichier):
Alias /icons/ "c:/Apache24/icons/"
<Directory "c:/Apache24/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
Remplacez les répertoires "c:/Apache24/icons /" par vos propres. IMPORTANT Vous DEVEZ avoir une barre oblique de fin dans la première référence de répertoire. La deuxième référence de répertoire ne doit pas avoir de barre oblique finale. Vos résultats devraient ressembler à ceci. Encore une fois, votre répertoire peut différer:
Alias /icons/ "c:/wamp/bin/Apache/apache2.4.9/icons/"
<Directory "c:/wamp/bin/Apache/apache2.4.9/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
Redémarrez votre serveur Apache et profitez de vos super icônes!
Cela fonctionne sur Wamp 3+.
urlAddLocalhost = "on"
Il ne devrait pas être nécessaire de modifier le fichier index.php dans le dossier www.
$suppress_localhost = false;
Cela a fait le tour pour moi.
liens Wampserver LocalHost ne fonctionnent pas correctement
C’est à partir de juin 2014 avec Wampserver2.5 (peut-être qu’ils vont résoudre ce problème dans les versions ultérieures).
Remarque: pour utiliser LocalHost: 8080 au lieu de LocalHost, apportez simplement les modifications appropriées dans les modifications mentionnées ci-dessous. =
Il y a 2 aspects de ce problème -
La première consiste à pouvoir accéder aux éléments sous "Vos projets" à partir de la page d'accueil Wamp localhost.
La seconde consiste à pouvoir accéder correctement aux éléments répertoriés dans la liste "Mes projets" de la barre des tâches de Wampserver Icon.
Pour résoudre le premier problème (pour pouvoir accéder aux éléments sous "Vos projets" à partir de la page d'accueil Wamp localhost), vous devez procéder comme suit ...
Il y a 2 modifications que vous devez créer dans le fichier index.php situé dans votre dossier wamp\www (généralement C:\wamp\www)
1) sur ligne changer
$suppress_localhost = true;
à
$suppress_localhost = false;
2) sur ligne 338 changer
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
à
$projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : 'http://localhost//').$file.'">'.$file.'</a></li>';
Une fois que vous avez apporté les modifications ci-dessus - si le serveur Wampserver est en cours d’exécution, actualisez simplement la page Hôte local et les modifications prennent effet immédiatement.
Pour corriger le deuxième élément (la liste "Mes projets" de la barre des tâches de l'icône Wampserver): Vous devez modifier C:\wamp\scripts\refresh.php.
Localisez la ligne 651 et modifiez la section de la ligne qui lit
Parameters: "http://'.$projectContents[$i].'/"; Glyph: 5
à
Parameters: "http://localhost//'.$projectContents[$i].'/"; Glyph: 5
Une fois que vous avez effectué cette deuxième série de modifications, vous devrez peut-être forcer Wampserver à actualiser la liste "Mes projets" en activant l'option de mise en ligne/hors ligne au bas de l'application Wamp Icon Tray.