Заставить XAMPP / Apache обслуживать файл вне htdocs [закрыто]

Можно ли настроить xampp для обслуживания файла вне htdocsкаталога?

Например, скажем, у меня есть файл, расположенный следующим образом:

C:\projects\transitCalculator\trunk\TransitCalculator.php

и мои файлы xampp обычно раздаются из:

C:\xampp\htdocs\

(потому что это конфигурация по умолчанию) Есть ли способ заставить Apache распознавать и обрабатывать мой TransitCalculator.phpфайл, не перемещая его под htdocs? Желательно, чтобы Apache обслуживал / имел доступ ко всему содержимому каталога проектов, и я не хочу перемещать каталог проектов в него htdocs.

edit: отредактировано, чтобы добавить Apache к заголовку вопроса, чтобы сделать Q / A более «доступным для поиска»

4.08.2008 16:54:49
Думаю, теги должны быть достаточно доступны для поиска.
icedwater 11.06.2014 12:24:28
Этот вопрос не должен был быть закрыт. Это вопрос XAMPP. Это вопрос разработчика.
Andrew Koper 8.11.2014 20:31:27
Эндрю Копер, я согласен, но неудивительно, что уровень жесткой неприязни, характерной для всей экосистемы обмена стеками, на данный момент. ¯_ (ツ) _ / ¯
cmcculloh 12.11.2014 20:37:35
Мабы не по теме, но просто хочу дать совет: иногда можно вместо этого переместить каталоги в вашу папку "htdocs", например. если вы хотите иметь возможность открывать файлы на Google Диске в localhost;) ( stackoverflow.com/questions/41751330/… )
Gordova 19.01.2017 22:26:26
Помимо всех ответов, я хотел бы добавить один. Начиная с версии PHP 5.4.0, вы можете перейти в корневой каталог проекта с помощью командной строки и выполнить php -S <host>:<port>. Например php -S localhost:80.
radiantshaw 3.09.2017 14:55:08
6 ОТВЕТОВ
РЕШЕНИЕ

Хорошо, для ответов pix0r , Sparks и Dave, похоже, есть три способа сделать это:


Виртуальные Хосты

  1. Откройте C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf.
  2. Отменить комментарий ~ строка 19 ( NameVirtualHost *:80).
  3. Добавьте ваш виртуальный хост (строка 36):

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    
  4. Откройте файл hosts (C: \ Windows \ System32 \ drivers \ etc \ hosts).

  5. Добавить

    127.0.0.1 transitcalculator.localhost #transitCalculator
    

    в конец файла (перед Spybot - Search & Destroy, если он у вас установлен).

  6. Сохранить (возможно, вам придется сохранить его на рабочем столе, изменить разрешения для старого файла хостов (щелкните правой кнопкой мыши> свойства) и скопировать новый в каталог поверх старого (или переименовать старый), если вы используете Виста и есть проблемы).
  7. Перезапустите Apache.

Теперь вы можете получить доступ к этому каталогу, перейдя по адресу http: //transitcalculator.localhost/ .


Сделать псевдоним

  1. Начиная ~ строку 200 вашего http.confфайла, скопируйте все между <Directory "C:/xampp/htdocs">и </Directory>(~ строка 232) и вставьте его сразу же ниже, C:/xampp/htdocsзаменив нужным каталогом (в данном случае C:/Projects), чтобы дать вашему серверу правильные разрешения для нового каталога.

  2. Найдите <IfModule alias_module></IfModule>раздел (строка 300) и добавьте

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
    

    (или то, что имеет отношение к вашим желаниям) под Aliasблоком комментариев, внутри тегов модуля.


Изменить корневой документ

  1. Отредактируйте ~ строку 176 в C: \ xampp \ apache \ conf \ httpd.conf; изменить DocumentRoot "C:/xampp/htdocs"на #DocumentRoot "C:/Projects"(или все, что вы хотите).

  2. Отредактируйте ~ строку 203 в соответствии с вашим новым местоположением (в данном случае C:/Projects).


Заметки:

  • Вы должны использовать косую черту "/" вместо обратной косой черты "\".
  • Не включайте завершающий "/" в конце.
  • перезагрузите ваш сервер .
359
28.02.2019 14:24:54
На шаге (3) отредактируйте C: \ Windows \ System32 \ drivers \ etc \ hosts. Лучше всего сначала запускать редактор (Блокнот, Блокнот ++ или любой другой редактор) в качестве Администратора. Таким образом, вы можете сохранить непосредственно в папку C: \ Windows \ System32 \ drivers \ etc \.
CallMeLaNN 27.12.2010 06:32:17
Если вы получили 403 ошибки, обратитесь по этой ссылке
Wojtek Owczarczyk 20.01.2014 10:47:44
Используя Order allow, deny Allow from all на Win7 возвращает 403 ERROR, потому что эта опция устарела. Использование Требуется все предоставлено. stackoverflow.com/questions/9110179/…
hywak 17.05.2014 12:30:52
Только к вашему сведению, этот шаг, по-моему, не был необходим для меня: Строка без комментариев 19 (NameVirtualHost *: 80)
Silverback 8.11.2014 01:20:12
Использование Order allow,deny Allow from allне работает для меня, но Require all grantedработает.
Danny Beckett 15.03.2016 13:43:04

Вы можете переместить его, отредактировав параметр DocumentRoot в XAMPP \ apache \ conf \ httpd.conf.

В настоящее время должно быть:

C: / XAMPP / HTDOCS

Измените это на:

C: / проекты / transitCalculator / багажник

95
4.08.2008 17:00:27
Не забудьте отредактировать его в ОБАХ строках, которые запрашивают DocumentRoot. Если вы измените только верхний, вы получите ошибки доступа для чтения и т. Д.
Arcolye 18.12.2010 03:24:13
это относится и к XAMP Mac?
angry kiwi 21.06.2011 02:54:53
Теперь по какому URL можно получить доступ к странице индекса?
Manish Kumar 5.08.2016 14:34:39

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» был относительно текущего файла.

49
5.08.2008 18:06:20
У меня есть несколько сетевых дисков на моем компьютере, которые были сопоставлены буквам дисков (например X:\myfolder). Когда я использую этот метод, я получаю предупреждение «Доступ запрещен». Означает ли это, что пользователь Apache не имеет доступа для чтения к диску?
harryg 20.05.2013 14:43:44
Под Directoryзамену Order allow,denyи Allow from allс Require all granted. См. Stackoverflow.com/questions/9110179/…
Michiel 3.02.2016 10:11:30

Вы можете настроить Apache для обслуживания страниц из любого места с любыми ограничениями, но обычно он распространяется в более безопасной форме.

Редактирование ваших файлов apache (http.conf - одно из наиболее распространенных имен) позволит вам настроить любую папку так, чтобы она отображалась в вашем webroot.

РЕДАКТИРОВАТЬ:

псевдоним myapp c: \ myapp \

Я отредактировал свой ответ, включив в него формат для создания псевдонима в файле http.conf, который напоминает ярлык в windows или символическую ссылку под un * x, где Apache «притворяется», что папка находится в webroot. Это, вероятно, будет более полезным для вас в долгосрочной перспективе.

16
4.08.2008 17:06:58

Если вы пытаетесь заставить XAMPP использовать сетевой диск в качестве корневого каталога документа, вы должны использовать UNC-пути в httpd.conf. XAMPP не распознает ваши подключенные сетевые диски.

Например, следующее не будет работать, DocumentRoot "X: / webroot"

Но это произойдет, DocumentRoot "//192.168.10.100/webroot" (обратите внимание на прямую, а не обратную косую черту)

10
1.03.2019 00:09:03
Он отлично работает с моим подключенным сетевым диском.
Sean Kendle 5.05.2014 17:32:00

Решение, позволяющее Apache 2 размещать сайты за пределами htdocs:

Под директивой DocumentRoot в httpd.conf вы должны увидеть блок каталога. Замените этот блок каталогов:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

ПОМНИТЕ, ЧТОБЫ НЕ ИСПОЛЬЗОВАТЬ ЭТУ КОНФИГУРАЦИЮ В РЕАЛЬНОЙ СРЕДЕ

7
28.02.2019 14:45:38
Работает только для файловых систем, поддерживающих symlincs. Нет объяснения, почему эту опцию не следует использовать.
Danubian Sailor 18.07.2013 13:04:02