Можно ли настроить xampp для обслуживания файла вне каталога htdocs?
Например, скажем, у меня есть файл, расположенный следующим образом:
C:\projects\transitCalculator\trunk\TransitCalculator.php
и мои файлы xampp обычно обслуживаются из:
C:\xampp\htdocs\
(потому что это конфигурация по умолчанию) Есть ли способ заставить Apache распознавать и обслуживать мой файл TransitCalculator.php, не перемещая его в htdocs? Я бы предпочел, чтобы Apache обслуживал / имел доступ ко всему содержимому каталога проектов, и я не хочу перемещать каталог проектов в htdocs.
edit: отредактировано, чтобы добавить Apache к заголовку вопроса, чтобы сделать Q / A более «доступным для поиска»
Эндрю Копер, я согласен, но это неудивительно, учитывая тот уровень деспотичного недружелюбия, который на данный момент характерен для всей экосферы обмена стеками. ¯_ (ツ) _ / ¯
Маби не по теме, но просто хочу дать совет: иногда можно вместо этого переместить каталоги в папку "htdocs", например. если вы хотите иметь возможность открывать файлы на Google Диске на localhost;) (stackoverflow.com/questions/41751330/…)
В Ubuntu все, что было нужно, - это символьная ссылка. (brettclapper.wordpress.com/2012/07/06/…)
Помимо всех ответов, я хотел бы добавить еще один. Начиная с PHP 5.4.0, вы можете перейти в корень вашего проекта с помощью командной строки и выполнить php -S <host>:<port>. Например php -S localhost:80.
Учтите, что измените свой файл хоста с 1 ip на loopback, например: 127.0.0.1 localhost, 127.0.0.2 test.localhost, 127.0.0.3 test2.localhost






Вы можете настроить Apache для обслуживания страниц из любого места с любыми ограничениями, но обычно он распространяется в более безопасной форме.
Редактирование файлов apache (http.conf - одно из наиболее распространенных имен) позволит вам настроить любую папку так, чтобы она отображалась в вашем корневом веб-каталоге.
Обновлено:
псевдоним myapp c: \ myapp \
Я отредактировал свой ответ, включив в него формат для создания псевдонима в файле http.conf, который похож на ярлык в Windows или символическую ссылку в un * x, где Apache «притворяется», что папка находится в корневом веб-каталоге. Это, вероятно, будет для вас более полезным в долгосрочной перспективе.
Вы можете переместить его, отредактировав параметр DocumentRoot в XAMPP \ apache \ conf \ httpd.conf.
В настоящее время это должно быть:
C:/xampp/htdocs
Измените его на:
C:/projects/transitCalculator/trunk
Не забудьте отредактировать его в ОБЕИХ строках, которые запрашивают DocumentRoot. Если вы измените только верхний, вы получите ошибки доступа для чтения и т. д.
это применимо и к XAMPP Mac?
теперь по какому URL можно получить доступ к странице индекса?
Хорошо, согласно ответам pix0r, Искры 'и Дэйв, похоже, есть три способа сделать это:
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>
Откройте файл хостов (C: \ Windows \ System32 \ drivers \ etc \ hosts).
Добавлять
127.0.0.1 transitcalculator.localhost #transitCalculator
в конец файла (перед Spybot - Search & Destroy, если он у вас установлен).
Теперь вы можете получить доступ к этому каталогу, перейдя к 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).
Примечания:
На шаге (3) отредактируйте файл C: \ Windows \ System32 \ drivers \ etc \ hosts. Лучше всего сначала запустить редактор (Блокнот, Блокнот ++ или любой другой редактор) от имени администратора. Таким образом, вы можете сохранить прямо в папку C: \ Windows \ System32 \ drivers \ etc \.
По какой-то причине он дает мне «Доступ запрещен!», Но когда я меняю httpd.conf, он работает нормально. Есть идеи, почему?
он не перезапускается для меня, единственный, который работает, - это подход documentroot ..
Я не мог заставить это работать (я тоже получил "Доступ запрещен"), пока я не переместил раздел <Directory> из раздела <VirtualHost>, сделав их родственными разделами. Стоит попробовать, если у вас все еще есть проблемы.
Если вы получаете 403 ошибки, обратитесь к эта ссылка
Мне не удалось заставить работать решение Alias, но DocumentRoot работал как шарм. (Примечание: проще всего просто найти все экземпляры «C: / xampp / htdocs» и заменить, потому что номера строк будут различаться в зависимости от версии) В любом случае: +1
Использование Order allow, deny Allow from all в Win7 возвращает 403 ERROR, потому что эта опция устарела. Использование Требовать все разрешено. stackoverflow.com/questions/9110179/…
К вашему сведению, этот шаг мне не понадобился: строка 19 без комментариев (NameVirtualHost *: 80)
Решение виртуальных хостов все еще работает в 2015 году :)
Если вы используете opendns, вы также получаете предупреждение «файл используется» при попытке сохранить файл hosts? Могу ли я создать символическую ссылку, не отключая свой DNS?
Использование Order allow,deny Allow from all для меня не сработало, но Require all granted работал.
Если вы измените только корень документа в httpd.conf, он не будет работать, если у вас есть виртуальный хост для *: 80, указывающий в другом месте. Так что измените и корень документа там.
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 2 размещать веб-сайты вне htdocs:
Под директивой DocumentRoot в httpd.conf вы должны увидеть блок каталога. Замените этот блок каталога на:
<Directory />
Options FollowSymLinks
AllowOverride All
Allow from all
</Directory>
ПОМНИТЕ, НЕ ИСПОЛЬЗУЙТЕ ДАННУЮ КОНФИГУРАЦИЮ В РЕАЛЬНОЙ СРЕДЕ.
Работает только для файловых систем, поддерживающих симлинки. Нет объяснений, почему не следует использовать эту опцию.
Если вы пытаетесь заставить XAMPP использовать сетевой диск в качестве корня документа, вы должны использовать пути UNC в httpd.conf. XAMPP не распознает подключенные сетевые диски.
Например, следующее не сработает, DocumentRoot "X: / webroot"
Но это будет, DocumentRoot "//192.168.10.100/webroot" (обратите внимание на косую черту, а не обратную косую черту)
Он отлично работает с моим подключенным сетевым диском.
Думаю, теги должны быть достаточно доступными для поиска.