Spraw, aby XAMPP / Apache wyświetlał plik poza htdocs [zamknięte]


304

Czy można skonfigurować xampp, aby wyświetlał plik poza htdocskatalogiem?

Powiedzmy na przykład, że mam plik zlokalizowany w następujący sposób:

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

a moje pliki xampp są zwykle dostarczane z:

C:\xampp\htdocs\

(ponieważ taka jest konfiguracja domyślna) Czy istnieje sposób, aby Apache rozpoznał i podał mój TransitCalculator.phpplik bez przenoszenia go htdocs? Wolałbym, żeby Apache obsługiwał / miał dostęp do całej zawartości katalogu projektów i nie chcę przenosić katalogu projektów htdocs.

edit: edytowane w celu dodania Apache do tytułu pytania, aby Q / A była bardziej „przeszukiwalna”


1
Sądzę, że tagi powinny być wystarczająco przeszukiwalne.
— icedwater

24
To pytanie nie powinno być zamknięte. To jest pytanie XAMPP. To jest pytanie programisty.
— Andrew Koper,

15
Andrew Koper, zgadzam się, ale nie jest zaskakujące, że poziom ciężkiej ręki nie jest przyjazny w tej chwili w całej ekosferze wymiany stosów. ¯_ (ツ) _ / ¯
— cmcculloh

Może odejdź od tematu, ale po prostu chcę podpowiedzieć: Czasami zamiast tego możesz przenieść katalogi do folderu „htdocs”, np. jeśli chcesz móc otwierać pliki na Dysku Google w localhost;) ( stackoverflow.com/questions/41751330/... )
— Gordova

2
Oprócz wszystkich odpowiedzi chciałbym dodać jedną. Począwszy od PHP 5.4.0, możesz przejść do katalogu głównego projektu za pomocą wiersza poleceń i wykonać php -S <host>:<port>. Na przykład php -S localhost:80.
— radiantshaw

Odpowiedzi:


362

Ok, na odpowiedzi pix0r , Sparks i Dave'a wygląda na to, że są na to trzy sposoby:


Wirtualne hosty

  1. Otwórz C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf.
  2. Cofnij komentarz ~ wiersz 19 ( NameVirtualHost *:80).
  3. Dodaj swojego wirtualnego hosta (~ linia 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. Otwórz plik hosts (C: \ Windows \ System32 \ drivers \ etc \ hosts).

  5. Dodaj

    127.0.0.1 transitcalculator.localhost #transitCalculator

    na końcu pliku (przed Spybot - Search & Destroy rzeczy, jeśli masz zainstalowany).

  6. Zapisz (może być konieczne zapisanie go na pulpicie, zmiana uprawnień do starego pliku hosts (prawy przycisk myszy> właściwości) i skopiowanie nowego do katalogu na stary (lub zmiana nazwy starego), jeśli używasz Vista i kłopoty).
  7. Uruchom ponownie Apache.

Teraz możesz uzyskać dostęp do tego katalogu, przechodząc do http: //transitcalculator.localhost/ .


Utwórz alias

  1. Począwszy od ~ 200 wiersza http.confpliku, skopiuj wszystko pomiędzy <Directory "C:/xampp/htdocs">i </Directory>(~ wiersz 232) i wklej go bezpośrednio poniżej, C:/xampp/htdocszastępując go wybranym katalogiem (w tym przypadku C:/Projects), aby dać serwerowi odpowiednie uprawnienia do nowego katalogu.

  2. Znajdź <IfModule alias_module></IfModule>sekcję (~ linia 300) i dodaj

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

    (lub cokolwiek, co odpowiada Twoim pragnieniom) poniżej Aliasbloku komentarza, wewnątrz tagów modułu.


Zmień katalog główny dokumentu

  1. Edytuj ~ wiersz 176 w C: \ xampp \ apache \ conf \ httpd.conf; zmień DocumentRoot "C:/xampp/htdocs"na #DocumentRoot "C:/Projects"(lub cokolwiek chcesz).

  2. Edytuj ~ wiersz 203, aby dopasować nową lokalizację (w tym przypadku C:/Projects).


Uwagi:

  • Musisz użyć ukośników „/” zamiast ukośników „\”.
  • Nie dołączaj końcowego „/” na końcu.
  • zrestartuj serwer .

13
W kroku (3) dokonaj edycji C: \ Windows \ System32 \ drivers \ etc \ hosts. Najlepsza praktyka, aby najpierw uruchomić edytor (Notepad, Notepad ++ lub dowolny edytor) jako Administrator. Możesz więc zapisać bezpośrednio w folderze C: \ Windows \ System32 \ drivers \ etc \.
— CallMeLaNN

3
Jeśli pojawi się błąd 403, zapoznaj się z tym linkiem
— Wojtek Owczarczyk

21
Za pomocą polecenia Zezwalaj, odmawiaj Zezwól wszystkim na Win7 zwraca błąd 403 BŁĄD, ponieważ te opcje są przestarzałe. Użyj Wymagaj wszystkich przyznanych. stackoverflow.com/questions/9110179/…
— hywak

4
Po prostu FYI, ten krok nie wydawał mi się konieczny do zrobienia: Cofnij komentarz w linii 19 (NameVirtualHost *: 80)
— Silverback

2
Korzystanie Order allow,deny Allow from allnie działało dla mnie, ale Require all granteddziałało.
— Danny Beckett

96

Możesz go przenieść, edytując ustawienie DocumentRoot w XAMPP \ apache \ conf \ httpd.conf.

Obecnie powinno to być:

C: / xampp / htdocs

Zmień na:

C: / projects / transitCalculator / trunk


40
Nie zapomnij edytować go OBU liniami, które proszą o DocumentRoot. Jeśli zmienisz tylko najwyższy, dostaniesz błędy dostępu do odczytu itp.
— Arcolye

2
dotyczy to również XAMP mac?
— zły kiwi

pod jakim adresem URL można uzyskać dostęp do strony indeksu?
— Manish Kumar

49

VirtualHost również by na to działał i może działać lepiej dla ciebie, ponieważ możesz obsługiwać kilka projektów bez potrzeby podkatalogów. Oto jak to zrobić:

httpd.conf (lub dodatkowy \ httpd-vhosts.conf w stosunku do httpd.conf. Końcowe ukośniki „\” mogą spowodować, że nie będzie działać):

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> 

Plik HOSTS (zwykle c: \ windows \ system32 \ drivers \ etc \ hosts):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

Teraz zrestartuj XAMPP i powinieneś być w stanie uzyskać dostęp do http: //transitcalculator.localhost/, a zostanie on zmapowany bezpośrednio do tego katalogu.

Może to być pomocne, jeśli próbujesz replikować środowisko produkcyjne, w którym tworzysz witrynę, która będzie znajdować się w katalogu głównym nazwy domeny. Możesz na przykład wskazać pliki z bezwzględnymi ścieżkami, które zostaną przeniesione na serwer:

<img src="/images/logo.png" alt="My Logo" />

podczas gdy w środowisku używającym aliasów lub podkatalogów musisz dokładnie śledzić, gdzie katalog „images” był względny w stosunku do bieżącego pliku.


Na komputerze mam kilka dysków sieciowych, które zostały zamapowane na litery dysków (np X:\myfolder.). Kiedy korzystam z tej metody, pojawia się ostrzeżenie „Dostęp zabroniony”. Czy to oznacza, że ​​użytkownik Apache nie ma dostępu do odczytu dysku?
— harryg

1
Pod Directoryzastąp Order allow,denyi Allow from allz Require all granted. Zobacz stackoverflow.com/questions/9110179/…
— Michiel

16

Możesz ustawić Apache do wyświetlania stron z dowolnego miejsca z dowolnymi ograniczeniami, ale zwykle jest on dystrybuowany w bezpieczniejszej formie.

Edycja plików apache (http.conf jest jedną z bardziej popularnych nazw) pozwoli ci ustawić dowolny folder tak, aby pojawił się w twoim katalogu głównym.

EDYTOWAĆ:

alias myapp c: \ myapp \

Zredagowałem swoją odpowiedź, aby uwzględnić format tworzenia aliasu w pliku http.conf, który jest jak skrót w systemie Windows lub dowiązanie symboliczne pod un * x, gdzie Apache „udaje”, że folder znajduje się w katalogu głównym. Będzie to prawdopodobnie bardziej przydatne dla ciebie w dłuższej perspektywie.


10

Jeśli próbujesz przekonać XAMPP do używania dysku sieciowego jako katalogu głównego dokumentu, musisz użyć ścieżek UNC w httpd.conf. XAMPP nie rozpozna mapowanych dysków sieciowych.

Na przykład następujące nie będzie działać, DocumentRoot „X: / webroot”

Ale tak się stanie, DocumentRoot „//192.168.10.100/webroot” (zwróć uwagę na ukośniki do przodu, a nie do tyłu)


Działa dobrze z moim zmapowanym dyskiem sieciowym.
— Sean Kendle

7

Rozwiązanie pozwalające Apache 2 na hostowanie stron internetowych poza htdocs:

Pod dyrektywą „DocumentRoot” w httpd.conf powinieneś zobaczyć blok katalogu. Zamień ten blok katalogu na:

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

PAMIĘTAJ, ABY NIE UŻYWAĆ TEJ KONFIGURACJI W PRAWDZIWYM ŚRODOWISKU


Działa tylko w systemach plików obsługujących symlinki. Brak wyjaśnienia, dlaczego nie należy używać tej opcji.
— Danubian Sailor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.