Можно ли настроить xampp для обслуживания файла вне htdocs
каталога?
Например, скажем, у меня есть файл, расположенный следующим образом:
C:\projects\transitCalculator\trunk\TransitCalculator.php
и мои файлы xampp обычно раздаются из:
C:\xampp\htdocs\
(потому что это конфигурация по умолчанию) Есть ли способ заставить Apache распознавать и обрабатывать мой TransitCalculator.php
файл, не перемещая его под htdocs
? Желательно, чтобы Apache обслуживал / имел доступ ко всему содержимому каталога проектов, и я не хочу перемещать каталог проектов в него htdocs
.
edit: отредактировано, чтобы добавить Apache к заголовку вопроса, чтобы сделать Q / A более «доступным для поиска»
Хорошо, для ответов pix0r , Sparks и Dave, похоже, есть три способа сделать это:
Виртуальные Хосты
- Откройте C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf.
- Отменить комментарий ~ строка 19 (
NameVirtualHost *:80
). Добавьте ваш виртуальный хост (строка 36):
<VirtualHost *:80> DocumentRoot C:\Projects\transitCalculator\trunk ServerName transitcalculator.localhost <Directory C:\Projects\transitCalculator\trunk> Order allow,deny Allow from all </Directory> </VirtualHost>
Откройте файл hosts (C: \ Windows \ System32 \ drivers \ etc \ hosts).
Добавить
127.0.0.1 transitcalculator.localhost #transitCalculator
в конец файла (перед Spybot - Search & Destroy, если он у вас установлен).
- Сохранить (возможно, вам придется сохранить его на рабочем столе, изменить разрешения для старого файла хостов (щелкните правой кнопкой мыши> свойства) и скопировать новый в каталог поверх старого (или переименовать старый), если вы используете Виста и есть проблемы).
- Перезапустите Apache.
Теперь вы можете получить доступ к этому каталогу, перейдя по адресу http: //transitcalculator.localhost/ .
Сделать псевдоним
Начиная ~ строку 200 вашего
http.conf
файла, скопируйте все между<Directory "C:/xampp/htdocs">
и</Directory>
(~ строка 232) и вставьте его сразу же ниже,C:/xampp/htdocs
заменив нужным каталогом (в данном случаеC:/Projects
), чтобы дать вашему серверу правильные разрешения для нового каталога.Найдите
<IfModule alias_module></IfModule>
раздел (строка 300) и добавьтеAlias /transitCalculator "C:/Projects/transitCalculator/trunk"
(или то, что имеет отношение к вашим желаниям) под
Alias
блоком комментариев, внутри тегов модуля.
Изменить корневой документ
Отредактируйте ~ строку 176 в C: \ xampp \ apache \ conf \ httpd.conf; изменить
DocumentRoot "C:/xampp/htdocs"
на#DocumentRoot "C:/Projects"
(или все, что вы хотите).Отредактируйте ~ строку 203 в соответствии с вашим новым местоположением (в данном случае
C:/Projects
).
Заметки:
- Вы должны использовать косую черту "/" вместо обратной косой черты "\".
- Не включайте завершающий "/" в конце.
- перезагрузите ваш сервер .
Order allow,deny Allow from all
не работает для меня, но Require all granted
работает. Вы можете переместить его, отредактировав параметр DocumentRoot в XAMPP \ apache \ conf \ httpd.conf.
В настоящее время должно быть:
C: / XAMPP / HTDOCS
Измените это на:
C: / проекты / transitCalculator / багажник
VirtualHost также будет работать для этого и может работать лучше для вас, так как вы можете разместить несколько проектов без необходимости в подкаталогах. Вот как вы это делаете:
httpd.conf (или дополнительный \ httpd-vhosts.conf относительно httpd.conf. Конечные косые черты "\" могут привести к тому, что он не будет работать):
NameVirtualHost *:80
# ...
<VirtualHost *:80>
DocumentRoot C:\projects\transitCalculator\trunk\
ServerName transitcalculator.localhost
<Directory C:\projects\transitCalculator\trunk\>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Файл HOSTS (обычно c: \ windows \ system32 \ drivers \ etc \ hosts):
# localhost entries
127.0.0.1 localhost transitcalculator.localhost
Теперь перезапустите XAMPP, и вы сможете получить доступ к http: //transitcalculator.localhost/, и он отобразится прямо в этот каталог.
Это может быть полезно, если вы пытаетесь воспроизвести производственную среду, в которой вы разрабатываете сайт, который будет находиться в корне доменного имени. Например, вы можете указать файлы с абсолютными путями, которые будут перенесены на сервер:
<img src="/images/logo.png" alt="My Logo" />
тогда как в среде, использующей псевдонимы или подкаталоги, вам необходимо отслеживать, где именно каталог «images» был относительно текущего файла.
X:\myfolder
). Когда я использую этот метод, я получаю предупреждение «Доступ запрещен». Означает ли это, что пользователь Apache не имеет доступа для чтения к диску? Directory
замену Order allow,deny
и Allow from all
с Require all granted
. См. Stackoverflow.com/questions/9110179/…Вы можете настроить Apache для обслуживания страниц из любого места с любыми ограничениями, но обычно он распространяется в более безопасной форме.
Редактирование ваших файлов apache (http.conf - одно из наиболее распространенных имен) позволит вам настроить любую папку так, чтобы она отображалась в вашем webroot.
РЕДАКТИРОВАТЬ:
псевдоним myapp c: \ myapp \
Я отредактировал свой ответ, включив в него формат для создания псевдонима в файле http.conf, который напоминает ярлык в windows или символическую ссылку под un * x, где Apache «притворяется», что папка находится в webroot. Это, вероятно, будет более полезным для вас в долгосрочной перспективе.
Если вы пытаетесь заставить XAMPP использовать сетевой диск в качестве корневого каталога документа, вы должны использовать UNC-пути в httpd.conf. XAMPP не распознает ваши подключенные сетевые диски.
Например, следующее не будет работать, DocumentRoot "X: / webroot"
Но это произойдет, DocumentRoot "//192.168.10.100/webroot" (обратите внимание на прямую, а не обратную косую черту)
Решение, позволяющее Apache 2 размещать сайты за пределами htdocs:
Под директивой DocumentRoot в httpd.conf вы должны увидеть блок каталога. Замените этот блок каталогов:
<Directory />
Options FollowSymLinks
AllowOverride All
Allow from all
</Directory>
ПОМНИТЕ, ЧТОБЫ НЕ ИСПОЛЬЗОВАТЬ ЭТУ КОНФИГУРАЦИЮ В РЕАЛЬНОЙ СРЕДЕ
php -S <host>:<port>
. Напримерphp -S localhost:80
.