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


304

Чи можливо налаштувати xampp для подачі файлів позаhtdocs каталогом?

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

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

і мої файли xampp зазвичай подаються з:

C:\xampp\htdocs\

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

редагувати: відредаговано, щоб додати Apache до назви питання, щоб зробити Q / A більш "пошуковим"


1
Я думаю, що теги мають бути достатньо пошуковими.
крижана вода

24
Це питання не повинно було бути закритим. Це питання XAMPP. Це питання для розробників.
Андрій Копер

15
Ендрю Копер, я погоджуюся, але це не дивно рівнем ендемічної недружелюбності у всій екосфері стак-біржу в цей момент. ¯_ (ツ) _ / ¯
cmcculloh

Вимкніть тему, але просто хочу порадити: Деколи є можливість замість цього перемістити каталоги у папку "htdocs", наприклад. якщо ви хочете мати можливість відкривати файли на Диску Google у localhost;) ( stackoverflow.com/questions/41751330/… )
Гордова

2
Крім усіх відповідей, я хотів би додати ще одну. З PHP 5.4.0 далі ви можете перейти до кореня проекту за допомогою командного рядка та виконати php -S <host>:<port>. Наприклад php -S localhost:80.
радіантшоу

Відповіді:


362

Гаразд, за відповідями 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. Відкрийте файл хостів (C: \ Windows \ System32 \ driver \ etc \ hosts).

  5. Додайте

    127.0.0.1 transitcalculator.localhost #transitCalculator

    до кінця файлу (перед Spybot - Пошук та знищення речей, якщо у вас встановлений).

  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).


Примітки:

  • Ви повинні використовувати косою косою рискою "/" замість "".
  • Не включайте кінцевий знак "/" наприкінці.
  • перезавантажте сервер .

13
На кроці (3) відредагуйте C: \ Windows \ System32 \ драйвери \ тощо \ хости. Найкраща практика спочатку запустити редактор (Блокнот, Блокнот ++ або будь-який редактор) як адміністратор. Таким чином, ви можете зберегти безпосередньо в папці C: \ Windows \ System32 \ driver \ etc \.
CallMeLaNN

3
Якщо ви отримаєте 403 помилки, перейдіть за цим посиланням
Wojtek Owczarczyk

21
Використовуючи "Позволити замовлення", заборонити "Дозволити всім" на Win7 повертає 403 ПОМИЛКУ, оскільки ці параметри застаріли. Використовувати Потрібні всі надані. stackoverflow.com/questions/9110179 / ...
hywak

4
Щойно FYI, цей крок не видався мені необхідним: рядок коментування 19 (NameVirtualHost *: 80)
Silverback

2
Використання Order allow,deny Allow from allне працювало для мене, але Require all grantedпрацювало.
Danny Beckett

96

Ви можете перемістити його, відредагувавши DocumentRoot налаштування у XAMPP \ apache \ conf \ httpd.conf.

Наразі це повинно бути:

C: / xampp / htdocs

Змініть його на:

С: / проекти / транзитКалькулятор / магістраль


40
Не забудьте відредагувати це в РОБОМ рядках, які запитують DocumentRoot. Якщо ви зміните лише верхню, ви отримаєте помилки доступу для читання тощо
Arcolye

2
це стосується і XAMP mac?
сердитий ківі

тепер за якою URL-адресою можна отримати доступ до індексної сторінки?
Маніш Кумар

49

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 \ driver \ 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

1
Під Directoryзаміну Order allow,denyі Allow from allз Require all granted. Дивіться stackoverflow.com/questions/9110179/…
Міхель

16

Ви можете встановити Apache для розміщення сторінок з будь-якого місця з будь-якими обмеженнями, але зазвичай він розповсюджується в більш захищеній формі.

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

Редагувати:

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

Я відредагував свою відповідь, щоб включити формат для створення псевдоніму у файлі http.conf, який подібний до ярлика у Windows або до символьного посилання під un * x, де Apache "робить вигляд", що папка знаходиться у webroot. Це, мабуть, стане вам кориснішим у довгостроковій перспективі.


10

Якщо ви намагаєтесь отримати XAMPP для використання мережевого накопичувача в якості кореня документа, ви повинні використовувати шляхи UNC у httpd.conf. XAMPP не розпізнає ваші відображені мережеві диски.

Наприклад, наступне не працюватиме, DocumentRoot "X: / webroot"

Але це буде, DocumentRoot "//192.168.10.100/webroot" (зверніть увагу на передні косої риски, а не на задню косу рису)


Це добре працює з моїм картографічним мережевим накопичувачем.
Шон Кендл

7

Рішення, щоб дозволити Apache 2 розміщувати веб-сайти за межами htdocs:

Під директивою "DocumentRoot" в httpd.conf ви повинні побачити блок каталогів. Замініть цей блок каталогу на:

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

НЕ ЗАБУДУЙТЕ НЕ ВИКОРИСТОВУВАТИ ЦІЙ КОНФІГУРАЦІЮ В РЕАЛЬНІЙ ЕКОЛОГІЇ


Працює лише для файлових систем, що підтримують символи. Немає пояснень, чому цю опцію не слід використовувати.
Дунайський матрос
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.