Вопрос:

Заставьте XAMPP / Apache обслуживать файл вне htdocs

php apache xampp

231942 просмотра

6 ответа

23814 Репутация автора

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

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

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

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

C:\xampp\htdocs\

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

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

Автор: cmcculloh Источник Размещён: 04.08.2008 04:54

Ответы (6)


15 плюса

14447 Репутация автора

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

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

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

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

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

Автор: sparkes Размещён: 04.08.2008 05:00

92 плюса

52320 Репутация автора

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

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

C: / XAMPP / HTDOCS

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

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

Автор: Dave Ward Размещён: 04.08.2008 05:00

345 плюса

23814 Репутация автора

Решение

Хорошо, для ответов 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).


Заметки:

  • Вы должны использовать косую черту "/" вместо обратной косой черты "\".
  • Не включайте завершающий "/" в конце.
  • перезагрузите ваш сервер .
Автор: cmcculloh Размещён: 04.08.2008 05:05

48 плюса

23648 Репутация автора

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

Автор: pix0r Размещён: 05.08.2008 03:30

4 плюса

0 Репутация автора

Ни одно из этих решений не сработало легко. Вот простейшее решение, позволяющее Apache 2 размещать веб-сайты вне htdocs:

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

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

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

Автор: JasonT Размещён: 26.01.2009 03:11

8 плюса

81 Репутация автора

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

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

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

Автор: Jason Размещён: 28.01.2011 03:04
32x32