Зробити 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.