Виртуальный хост: доступ по локальной сети, WAMP, Windows 7, Apache 2.4.4, Php 5.4.16; возвращает отсутствие-разрешения-доступа-на-этом-сервере

Прежде чем я начну.. Всем доброго времени суток! :)

У меня проблема с моим виртуальным хостом WAMP. Другой компьютер в нашей локальной сети продолжает получать сообщение об ошибке «Запрещено-у вас-нет-разрешения-доступа-на-этом-сервере»..

Ниже приведены текущие настройки, которые у меня есть:

/httpd.conf

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#
<Directory />
    Options FollowSymLinks Includes
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "c:/wamp/www"
<Directory "c:/wamp/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order Deny,Allow
    Allow from all
    Allow from 127.0.0.1
    Allow from ::1
    Allow from localhost
</Directory>

/phpmyadmin.conf Псевдоним /phpmyadmin "c:/wamp/apps/phpmyadmin4.0.4/"

# to give access to phpmyadmin from outside 
# replace the lines
#
#      Order Deny,Allow
#   Deny from all
#   Allow from 127.0.0.1
#
# by
#
#        Order Allow,Deny 
#   Allow from all
#

<Directory "c:/wamp/apps/phpmyadmin4.0.4/">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride all
    Order Deny,Allow
    Allow from all
    Allow from 127.0.0.1
    Allow from ::1
    Allow from localhost
</Directory>

/httpd.vhosts.conf

Listen 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
    ServerName www.ecommerce.local
    ServerAlias ecommerce.local
    DocumentRoot C:/wamp/www/ecommerce
    ErrorLog "C:/wamp/www/ecommerce/logs/error.log"
    CustomLog "C:/wamp/www/ecommerce/logs/access.log" common
    <Directory />
        Require all granted
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost 127.0.0.1:80>
    ServerName localhost
    DocumentRoot C:/wamp/www/
</VirtualHost>

Также...

  • попытался пропинговать с другого компьютера ответ - успех
  • пытался отключить брандмауэр на обоих компьютерах
  • попытался добавить всех в свойства папки www changed_to_everyone

Я пробовал другие решения, которые я нашел, но все равно безрезультатно. Я могу получить доступ к "http://ecommerce.local" но другой компьютер в нашей локальной сети получает ошибку «запрещено-у вас-нет-разрешения-доступа-на-этом-сервере»..

это как-то связано с нашими сетевыми настройками? другой компьютер также находится в тех же настройках... мой ip: 192.168.1.198 и другой компьютер 192.168.1.192   настройки ipv4 и ipv6


person Hunyo Silaw    schedule 05.04.2014    source источник


Ответы (2)


Доступ к Apache не имеет ничего общего с правами доступа Windows в системе Windows. Все дело в том, что вы говорите Apache разрешить.

Кроме того, вы используете смесь синтаксиса Apache 2.2 и Apache 2.4 в большинстве своих объявлений доступа.

Apache 2.2
Allow .....

Apache 2.4
Require .....
Require local - means 127.0.0.1 and localhost and ::1
Require ip    - specifies a single ip (192.168.0.10) or a range of ip's (192.168.0)

Apache пока не жалуется, но, вероятно, лучше придерживаться синтаксиса Apache 2.4.

Это первое изменение, которое вы сделали, очень опасно, и его следует изменить на это, если вы действительно не хотите предоставить неограниченный доступ к серверам C: \ drive любому, кто взломает ваш сервер Apache.

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#
<Directory />
    Options FollowSymLinks Includes
    AllowOverride All
    Require all denied

</Directory>

Здесь снова используйте синтаксис Apache 2.4 и укажите, кого вы хотите разрешить.

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "c:/wamp/www"
<Directory "c:/wamp/www">
    Options Indexes FollowSymLinks
    AllowOverride All

    Require local
    Require ip 192.168.0

</Directory>

Теперь к вашим определениям виртуального хоста

Вам это не нужно Listen 127.0.0.1:80

Поместите определение localhost первым, чтобы оно стало доменом по умолчанию, поэтому, если используется случайное или неправильно написанное доменное имя, оно загрузится. Если это исходит от IP-адреса в Интернете, они получат сообщение об ошибке, поскольку доступ разрешен только IP-адресам из вашей сети. Это действительно на потом, когда вы решите открыть свой сайт для более широкой аудитории.

Также не указывайте 127.0.0.1 в строке, вы хотите, чтобы она прослушивала любой входящий ip, а не только эту машину.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "C:/wamp/www"
    <Directory "c:/wamp/www">
        Options Indexes FollowSymLinks
        AllowOverride All

        Require local
        ## May not want to let people access the wamp page so leave this off if not.
        Require ip 192.168.0

    </Directory>
</VirtualHost>


<VirtualHost *:80>
    ServerName www.ecommerce.local
    ServerAlias ecommerce.local
    DocumentRoot "C:/wamp/www/ecommerce"

    ## not a good idea to have logs visible under the DocumentRoot folder
    ## should really go in C:\wamp\logs
    ## But I assume you want developers to have easy access during development
    ## ErrorLog "C:/wamp/logs/ecommerce_error.log"
    ## CustomLog "C:/wamp/logs/ecommerce_access.log" common

    ErrorLog "C:/wamp/www/ecommerce/logs/error.log"
    CustomLog "C:/wamp/www/ecommerce/logs/access.log" common

    <Directory />
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All

        Require local
        Require ip 192.168.0

    </Directory>
</VirtualHost>

Теперь вы можете разрешить своим локальным разработчикам доступ к phpMyAdmin. Если это так, вам также нужно будет изменить файл C:\wamp\alias\phpmyadmin.conf.

<Directory "c:/wamp/apps/phpmyadmin4.0.4/">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride all
    Require local
    Require ip 192.168.0
</Directory>

Или вы могли бы быть более конкретным здесь и разрешить только определенным IP-адресам использовать phpMyAdmin, используя что-то вроде этого

Require ip 192.168.0.10 192.168.0.11 192.168.0.12

Просто как примечание. Лично мне нравится полностью перемещать мои сайты на VisualHosts из структуры папок C:\wamp\. Так что я бы поместил свою папку ecommerce куда-нибудь вроде C:\websites\ecommerce\www\. Это сводит к минимуму любую путаницу в отношении прав доступа, а также, если мне нужно обновить WAMP, код моего веб-сайта никогда не будет в опасности, если я сделаю глупую опечатку.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Теперь, чтобы получить доступ к вашему новому сайту как ecommerce.local или www.ecommerce.local, вам нужно внести изменения в файл HOSTS.

C:\windows\system32\drivers\etc\hosts

На ПК с WAMP добавьте эту строку:

127.0.0.1 ecommerce.local

На другом ПК сделайте так

192.168.0.10 ecommerce.local

Где 192.168.0.10 — это IP-адрес ПК, на котором работает WAMP.

Затем перезагрузите компьютер или выполните эти 2 команды из командного окна, запущенного as Administrator

net stop "DNS Client"

net start "DNS Client"
person RiggsFolly    schedule 05.04.2014
comment
Спасибо, что уделили мне время и ответили на мой вопрос... и дали обратную связь... Это мой первый раз, когда я настраиваю виртуальный хост. вышеуказанные настройки были просто для целей тестирования, только почему другие локальные компьютеры не могут получить доступ к моему проекту.. но в любом случае я очень благодарен вам за советы.. :) - person Hunyo Silaw; 05.04.2014
comment
У вас также есть какие-либо идеи, почему панель локального хоста отображается на другом компьютере в моей сети, а не в моем проекте сайта? ecommerce.local показывает панель localhost, и для просмотра моего сайта им все равно нужно указать ecommerce.local/ecommerce - person Hunyo Silaw; 05.04.2014
comment
Да, смотрите дополнительную информацию - person RiggsFolly; 05.04.2014
comment
Спасибо, Риггс.. :) Вы спасли мой день.. :) - person Hunyo Silaw; 05.04.2014

Я уже решил свою проблему... Я никому не предоставил доступ к своей папке... поэтому я сделал следующее:

  1. Щелкните правой кнопкой мыши папку проекта
  2. В параметрах папки перейдите на вкладку «Общий доступ»
  3. Нажмите на предварительный обмен
  4. откроется опция предварительного совместного доступа, затем отметьте галочкой общий доступ к этой папке
  5. нажмите разрешения
  6. Откроется опция разрешений, затем выберите, кому вы хотите поделиться своей папкой.
  7. Я выбрал всех, а ниже поставил галочку «Полный доступ» (*только для ознакомительных целей; рекомендуется поставить галочку только «Чтение»)
  8. затем нажмите «ОК» для всех открытых опций.

как поделиться папкой

person Hunyo Silaw    schedule 05.04.2014