web-dev-qa-db-fra.com

L'hôte virtuel WAMP ne fonctionne pas

J'utilise une version wamp 2.5 Mon Apache est 2.4.9 PHP: 5.5.12 MySQL: 5.6.17

J'ai ces configurations:

Sur mon httpd.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Sur mon G:\wamp\bin\Apache\apache2.4.9\conf\extra\httpd-vhost.conf

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.Apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual Host
# configuration.
#


#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#


<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-Host.example.com"
    ServerName dummy-Host.example.com
    ServerAlias www.dummy-Host.example.com
    ErrorLog "logs/dummy-Host.example.com-error.log"
    CustomLog "logs/dummy-Host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-Host2.example.com"
    ServerName dummy-Host2.example.com
    ErrorLog "logs/dummy-Host2.example.com-error.log"
    CustomLog "logs/dummy-Host2.example.com-access.log" common
</VirtualHost>


<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/wamp/www"
    ServerName localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "g:\wamp\www\mysite\public"
    ServerName mysite.dev
</VirtualHost>

Sur mon c:\Windows\System32\Drivers\etc\hosts

# localhost name resolution is handled within DNS itself.
127.0.0.1   localhost
127.0.0.1   mysite.dev
#   ::1     localhost

J'essaie d'accéder à mon projet en utilisant cette URL: http://www.mysite.dev/ MAIS Je reçois un Server not found error J'ai essayé d'y accéder en utilisant www.mysite.dev, http://mysite.dev mais toujours malchanceux!

Mon hôte virtuel fonctionnait auparavant, mais je ne sais pas pourquoi cela ne fonctionnait pas maintenant. Il se passe des trucs bizarres.

Je ne sais pas ce qui se passe. Toutes les idées seront grandement appréciées!

Merci!

12
Jason M

Vous devez d'abord supprimer les définitions d'exemple dummy de votre fichier vhost-httpd.conf. Ils sont là sous la forme exemples uniquement juste pour vous aider à démarrer avec la syntaxe, et ne doivent pas rester dans un conf/extra/httpd-vhosts.conf Actif car ils pointent vers des dossiers inexistants.

Supprimez donc ces 2 définitions du fichier:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-Host.example.com"
    ServerName dummy-Host.example.com
    ServerAlias www.dummy-Host.example.com
    ErrorLog "logs/dummy-Host.example.com-error.log"
    CustomLog "logs/dummy-Host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "g:/Apache24/docs/dummy-Host2.example.com"
    ServerName dummy-Host2.example.com
    ErrorLog "logs/dummy-Host2.example.com-error.log"
    CustomLog "logs/dummy-Host2.example.com-access.log" common
</VirtualHost>

Second Apache 2.4.x est compatible avec IPV4 (127.0.0.1) et IPV6 (:: 1), donc votre fichier hosts devrait ressembler à ceci avec des définitions pour les versions IPV4 et IPV6 pour chaque site. Le navigateur peut utiliser arbitrairement l'un ou l'autre donc vous avez besoin des deux mais utilisera probablement le réseau IPV6 de préférence à l'IPV4 si les deux sont réellement actifs sur votre PC.

127.0.0.1   localhost
::1  localhost

127.0.0.1   mysite.dev
::1  mysite.dev

Maintenant, sur les 2 hôtes virtuels qui existent réellement sur votre système, essayez ceci comme définition d'hôte virtuel:

<VirtualHost *:80>
    DocumentRoot "g:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
    <Directory  "G:/wamp/www">
        AllowOverride All
        Options Indexes FollowSymLinks
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "g:\wamp\www\mysite\public"
    ServerName mysite.dev
    ServerAlias www.mysite.dev
    ErrorLog "logs/mysite-error.log"
    CustomLog "logs/mysite-access.log" common
    <Directory  "G:/wamp/www/mysite/public">
        AllowOverride All
        Options Indexes FollowSymLinks
        Require local
    </Directory>
</VirtualHost>

La section <Directory>....</Directory> Dans la section <VirtualHost>....</VirtualHost> Indique à Apache à partir de quelles adresses IP il est autorisé à accepter les connexions, donc l'utilisation de la syntaxe Apache 2.4 Require local Limite l'accès afin que seul le PC exécutant WAMPServer ie Apache peut se connecter à n'importe lequel de ces sites.

Évitez de mélanger la syntaxe Apache 2.2 et la syntaxe Apache 2.4 dans la même définition. Alors n'utilisez pas

Order Allow,Deny
Allow from all

et

Require all granted

dans la même définition. Vous utilisez Apache 2.4, utilisez donc la syntaxe Apache 2.4.

Si vous trouvez que vous souhaitez autoriser d'autres PC à l'intérieur de votre réseau local à voir votre site, c'est-à-dire votre compagnon de travail ou les enfants, etc., vous pouvez ajouter cette syntaxe à une ou plusieurs de vos définitions d'hôte virtuel.

Autorisez un seul autre PC sur votre site

Require local
Require ip 192.168.1.100

ou 2 autres PC

Require local
Require ip 192.168.1.100, 192.168.1.101

Ou pour n'importe qui sur votre réseau local, utilisez simplement les 3 premiers des 4 quartiles de l'adresse IP.

Require ip 192.168.1

Évitez également d'utiliser la syntaxe qui permet l'accès de n'importe où, c'est-à-dire.

Require all granted  <--Apache 2.4 syntax

or 

Order Allow,Deny     <-- Apache 2.2 syntax
Allow from all    

Il peut résoudre vos problèmes à court terme, mais n'attend que de vous rattraper un peu plus tard lorsque vous décidez de montrer votre site à un ami/client/patron. Si vous arrivez à l'étape de redirection de port, votre routeur afin que le monde soit autorisé à entrer dans votre réseau, ce qui rendrait TOUS VOS SITES disponibles pour le monde.

Mieux vaut changer la définition de l'hôte virtuel ONE pour le site ONE que vous voulez que les gens voient pour tester/se vanter de Require local À Require all granted Et autoriser uniquement l'accès à ce site unique depuis Internet.

Une fois que vous avez effectué toutes ces modifications, n'oubliez pas de redémarrer Apache.

De plus, si vous modifiez le fichier hosts pour rendre les chnages actifs, vous devez soit redémarrer, soit exécuter ces commandes à partir de la ligne de commande d'une fenêtre de commandes démarrée en utilisant l'option Runs as Administrator.

net stop dnscache
net start dnscache

Si vous utilisez Windows 10, les commandes DNS ci-dessus ne fonctionnent plus, vous devez le faire à la place.

ipconfig /flushdns
17
RiggsFolly

En raison de l'acquisition de .dev gTLD par Google, il n'est plus facile d'avoir des sites de développement .dev, le meilleur moyen d'atténuer est simplement de renommer votre domaine de développement en .local ou quelque chose que vous préférez.

Ce qui se passe en arrière-plan est que le serveur DNS local redirige le navigateur vers 127.0.53.53 (ouvrez cmd> nslookup yourdomain.dev) afin d'informer les utilisateurs finaux de l'acquisition du gTLD .dev. Étant donné que le domaine .dev dans le fichier hosts est défini sur 127.0.0.1, il indique que la connexion a été refusée.

Vous pouvez remplacer 127.0.0.1 par 127.0.53.53 dans le fichier hosts et voir que l'erreur de navigateur passe de ERR_CONNECTION_REFUSED à ERR_ICANN_NAME_COLLISION.

5
Maziyar Mk

Ce qui suit fonctionne pour moi

<VirtualHost *:80>
    DocumentRoot "G:\project\test.dev"
    ServerAdmin [email protected]
    ServerName test.dev
    ErrorLog "logs/test.dev-error.log"
    CustomLog "logs/test.dev-access.log" common
    <Directory "G:\project\test.dev">
       AllowOverride All
       Options Indexes FollowSymLinks
       Require local
    </Directory>
</VirtualHost>
2
Mahesh Hegde

Je résout le même problème en décommentant certaines lignes dans httpd.conf dans le dossier Apache.

Décommentez les lignes ci-dessous:

Include conf/extra/httpd-vhosts.conf
LoadModule vhost_alias_module modules/mod_vhost_alias.so

Enregistrez le fichier et redémarrez votre Apache et cela fonctionnera. Un grand merci à ce gars: https://john-dugan.com/wamp-vhost-setup/

2

J'arrive très tard à cette question, j'ai fait tout ce qui a été mentionné par @RiggsFolly mais une chose que j'ai changé l'a fait fonctionner instantanément. J'ai changé .dev à .test car .dev est réservé. J'espère que cela t'aides

0
Hichem Chekebkeb

Découvrez ces modules sans commentaires dans httpd.conf

  • proxy_module
  • proxy_http_module
0
Kiryl Plyashkevich