Ответ 1
Вы также можете посмотреть на этот ответ специально, если вы сейчас используете WAMPServer 3 или выше, для простого клика и пути создания виртуальных хостов.
На самом деле это изменение было задумано разработчиками WAMPServer и по уважительной причине.
Существует проблема с использованием URL-адреса localhost/project1
и стандартного WAMPServer DocumentRoot в том, что это вызывает проблемы для некоторых сред и сред типа WordPress, а также для вашего собственного кода, если вы используете код, который зависит от знания чего-либо о среде сервера.
Правильное решение - создать виртуальные хосты для всех ваших проектов, даже тех, которые хранятся в папках в стиле \wamp\www\project1
.
При этом DocumentRoot является \wamp\www
и именно это вызывает эти проблемы.
Эти инструменты ожидают, что DocumentRoot будет корнем сайта, т.е. \wamp\www\project1
чтобы при использовании таких переменных PHP, как
$_SERVER['HTTP_HOST']
$_SERVER['SERVER_NAME']
$_SERVER['DOCUMENT_ROOT']
они получают правильный ответ, то есть ответ, который они получили бы на реальном живом сервере, на котором размещался именно этот сайт
Таким образом, использование url в стиле localhost\project1
будет означать, что эти переменные вернутся
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = C:/wamp/www
Когда они должны вернуться
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = C:/wamp/www/project1
Итак, что вы должны сделать, чтобы меню My Projects
заработало и облегчило копирование сайтов на работающие серверы:
Создайте запись в файле HOSTS для каждого проекта следующим образом, и не забудьте создать запись для доступа через IPV4 (127.0.0.1) и одну для доступа через IPV6 (:: 1): -
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Не забудьте обновить кэш DNS Windows после любого изменения этого файла следующим образом: -
Запустите командное окно, используя Run as Administrator
и запустите: -
net stop Dnscache
net start Dnscache
Теперь вы должны создать определение виртуального хоста, поэтому отредактируйте \wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhost.conf
(версии apache могут отличаться)
Удалите материал по умолчанию там в первый раз, когда вы делаете это. А затем создайте определения виртуального хоста следующим образом:
#
# Use name-based virtual hosting.
# This next line is not required if you are using Apache 2.4.x and should be deleted
NameVirtualHost *:80
## should be first so the wamp menu page loads and is the default site
## should also never be changed from only allowing access from the local machine
## for a bit of extra security from casual ip address probing
<VirtualHost *:80>
DocumentRoot "C:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "C:/wamp/www">
AllowOverride All
<IfDefine APACHE24>
Require local
</IfDefine>
<IfDefine !APACHE24>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
</IfDefine>
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/wamp/www/project1"
ServerName project1
ServerAlias project1
<Directory "C:/wamp/www/project1">
AllowOverride All
<IfDefine APACHE24>
Require local
</IfDefine>
<IfDefine !APACHE24>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
</IfDefine>
</Directory>
</VirtualHost>
Теперь вам нужно сделать еще одно изменение, вы должны раскомментировать строку в httpd.conf
которая включает в себя только что измененный файл выше. Поэтому отредактируйте файл httpd.conf
, используйте меню wampmanager, чтобы убедиться, что вы редактируете правильный файл.
Найдите эту строку #Include conf/extra/httpd-vhosts.conf
и удалите символ комментария #
в начале строки следующим образом: -
Include conf/extra/httpd-vhosts.conf
Теперь, конечно, вам нужно будет перезапустить Apache, чтобы он принял изменения вашей конфигурации.
Если Apache не перезагружается, вы, вероятно, допустили ошибку в конфигурации, чтобы выяснить, что не так, попробуйте это.
Откройте окно командной \wamp\bin\apache\apache2.4.9\bin
и CD
в папку \wamp\bin\apache\apache2.4.9\bin
.
Затем запустите это: -
httpd -t
Если ошибка в файлах httpd.conf
или httpd-vhost.conf
она сообщит вам об ошибке, а также даст номер строки, чтобы сделать поиск ошибки очень простым.