Сделать файл обслуживания 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 более «доступным для поиска»

Думаю, теги должны быть достаточно доступными для поиска.

icedwater 11.06.2014 16:24

Эндрю Копер, я согласен, но это неудивительно, учитывая тот уровень деспотичного недружелюбия, который на данный момент характерен для всей экосферы обмена стеками. ¯_ (ツ) _ / ¯

cmcculloh 12.11.2014 23:37

Маби не по теме, но просто хочу дать совет: иногда можно вместо этого переместить каталоги в папку "htdocs", например. если вы хотите иметь возможность открывать файлы на Google Диске на localhost;) (stackoverflow.com/questions/41751330/…)

Gordova 20.01.2017 01:26

В Ubuntu все, что было нужно, - это символьная ссылка. (brettclapper.wordpress.com/2012/07/06/…)

M.C. 25.07.2017 14:06

Помимо всех ответов, я хотел бы добавить еще один. Начиная с PHP 5.4.0, вы можете перейти в корень вашего проекта с помощью командной строки и выполнить php -S <host>:<port>. Например php -S localhost:80.

radiantshaw 03.09.2017 17:55

Учтите, что измените свой файл хоста с 1 ip на loopback, например: 127.0.0.1 localhost, 127.0.0.2 test.localhost, 127.0.0.3 test2.localhost

Leandro 28.02.2019 19:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
314
6
257 714
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вы можете настроить 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. Если вы измените только верхний, вы получите ошибки доступа для чтения и т. д.

Arcolye 18.12.2010 06:24

это применимо и к XAMPP Mac?

angry kiwi 21.06.2011 06:54

теперь по какому URL можно получить доступ к странице индекса?

Manish Kumar 05.08.2016 17:34
Ответ принят как подходящий

Хорошо, согласно ответам pix0r, ИскрыДэйв, похоже, есть три способа сделать это:


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

  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. Откройте файл хостов (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).


Примечания:

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

На шаге (3) отредактируйте файл C: \ Windows \ System32 \ drivers \ etc \ hosts. Лучше всего сначала запустить редактор (Блокнот, Блокнот ++ или любой другой редактор) от имени администратора. Таким образом, вы можете сохранить прямо в папку C: \ Windows \ System32 \ drivers \ etc \.

CallMeLaNN 27.12.2010 09:32

По какой-то причине он дает мне «Доступ запрещен!», Но когда я меняю httpd.conf, он работает нормально. Есть идеи, почему?

ilyo 05.05.2013 13:47

он не перезапускается для меня, единственный, который работает, - это подход documentroot ..

Juan 01.06.2013 21:00

Я не мог заставить это работать (я тоже получил "Доступ запрещен"), пока я не переместил раздел <Directory> из раздела <VirtualHost>, сделав их родственными разделами. Стоит попробовать, если у вас все еще есть проблемы.

bart 15.07.2013 13:11

Если вы получаете 403 ошибки, обратитесь к эта ссылка

Wojtek Owczarczyk 20.01.2014 14:47

Мне не удалось заставить работать решение Alias, но DocumentRoot работал как шарм. (Примечание: проще всего просто найти все экземпляры «C: / xampp / htdocs» и заменить, потому что номера строк будут различаться в зависимости от версии) В любом случае: +1

SKuijers 09.05.2014 14:26

Использование Order allow, deny Allow from all в Win7 возвращает 403 ERROR, потому что эта опция устарела. Использование Требовать все разрешено. stackoverflow.com/questions/9110179/…

hywak 17.05.2014 16:30

К вашему сведению, этот шаг мне не понадобился: строка 19 без комментариев (NameVirtualHost *: 80)

Silverback 08.11.2014 04:20

Решение виртуальных хостов все еще работает в 2015 году :)

ericgrosse 31.08.2015 06:08

Если вы используете opendns, вы также получаете предупреждение «файл используется» при попытке сохранить файл hosts? Могу ли я создать символическую ссылку, не отключая свой DNS?

Wolfpack'08 03.02.2016 02:30

Использование Order allow,deny Allow from all для меня не сработало, но Require all granted работал.

Danny Beckett 15.03.2016 16:43

Если вы измените только корень документа в httpd.conf, он не будет работать, если у вас есть виртуальный хост для *: 80, указывающий в другом месте. Так что измените и корень документа там.

trogne 25.11.2016 03:35

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 нет доступа для чтения к диску?

harryg 20.05.2013 18:43

Под Directory замените Order allow,deny и Allow from all на Require all granted. См. stackoverflow.com/questions/9110179/…

Michiel 03.02.2016 13:11

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

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

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

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

Работает только для файловых систем, поддерживающих симлинки. Нет объяснений, почему не следует использовать эту опцию.

Danubian Sailor 18.07.2013 17:04

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

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

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

Он отлично работает с моим подключенным сетевым диском.

Sean Kendle 05.05.2014 21:32

Другие вопросы по теме