XAMPP / Apache-Servedatei außerhalb von htdocs erstellen [geschlossen]

304

Ist es möglich, xampp so zu konfigurieren , dass eine Datei außerhalb des htdocsVerzeichnisses bereitgestellt wird ?

Angenommen, ich habe eine Datei wie folgt:

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

und meine xampp- Dateien werden normalerweise bereitgestellt von:

C:\xampp\htdocs\

(weil dies die Standardkonfiguration ist) Gibt es eine Möglichkeit, Apache dazu zu bringen, meine TransitCalculator.phpDatei zu erkennen und bereitzustellen, ohne sie zu verschieben htdocs? Am liebsten möchte ich, dass Apache den gesamten Inhalt des Projektverzeichnisses bereitstellt und Zugriff darauf hat, und ich möchte das Projektverzeichnis nicht unter verschieben htdocs.

edit: bearbeitet, um Apache zum Fragentitel hinzuzufügen, um Q / A "durchsuchbarer" zu machen

cmcculloh
quelle
1
Die Tags sollen durchsuchbar genug sein, denke ich.
Eiswasser
24
Diese Frage hätte nicht geschlossen werden dürfen. Dies ist eine XAMPP-Frage. Dies ist eine Entwicklerfrage.
Andrew Koper
15
Andrew Koper, ich stimme zu, aber es ist nicht überraschend, wie stark die Unfreundlichkeit ist, die zu diesem Zeitpunkt in der gesamten Ökosphäre des Stapelaustauschs verbreitet ist. ¯_ (ツ) _ / ¯
cmcculloh
Maby vom Thema ab, möchte aber nur einen Tipp geben: Manchmal besteht eine Option darin, stattdessen Verzeichnisse in Ihren Ordner "htdocs" zu verschieben, z. wenn Sie in der Lage sein möchten, Dateien in Google Drive in localhost zu öffnen;) ( stackoverflow.com/questions/41751330/… )
Gordova
2
Abgesehen von allen Antworten möchte ich eine hinzufügen. Ab PHP 5.4.0 können Sie über die Befehlszeile zu Ihrem Projektstamm wechseln und ausführen php -S <host>:<port>. Zum Beispiel php -S localhost:80.
Radiantshaw

Antworten:

362

Ok, laut den Antworten von pix0r , Sparks und Dave gibt es drei Möglichkeiten, dies zu tun:


Virtuelle Hosts

  1. Öffnen Sie C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf.
  2. Kommentar entfernen ~ Zeile 19 ( NameVirtualHost *:80).
  3. Fügen Sie Ihren virtuellen Host hinzu (~ Zeile 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. Öffnen Sie Ihre Hosts-Datei (C: \ Windows \ System32 \ drivers \ etc \ hosts).

  5. Hinzufügen

    127.0.0.1 transitcalculator.localhost #transitCalculator

    bis zum Ende der Datei (vor dem Spybot - Search & Destroy-Zeug, wenn Sie das installiert haben).

  6. Speichern (Möglicherweise müssen Sie es auf dem Desktop speichern, die Berechtigungen für die alte Hosts-Datei ändern (Rechtsklick> Eigenschaften) und die neue Datei in das Verzeichnis über die alte kopieren (oder die alte umbenennen), wenn Sie sie verwenden Vista und habe Probleme).
  7. Starten Sie Apache neu.

Jetzt können Sie auf dieses Verzeichnis zugreifen, indem Sie zu http: //transitcalculator.localhost/ navigieren .


Machen Sie einen Alias

  1. Beginnen Sie mit ~ Zeile 200 Ihrer http.confDatei, kopieren Sie alles zwischen <Directory "C:/xampp/htdocs">und </Directory>(~ Zeile 232) und fügen Sie es unmittelbar darunter ein, wobei Sie es C:/xampp/htdocsdurch das gewünschte Verzeichnis ersetzen (in diesem Fall C:/Projects), um Ihrem Server die richtigen Berechtigungen für das neue Verzeichnis zu erteilen.

  2. Suchen Sie den <IfModule alias_module></IfModule>Abschnitt (~ Zeile 300) und fügen Sie ihn hinzu

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

    (oder was auch immer für Ihre Wünsche relevant ist) unterhalb des AliasKommentarblocks innerhalb der Modul-Tags.


Ändern Sie Ihren Dokumentstamm

  1. Bearbeiten Sie ~ Zeile 176 in C: \ xampp \ apache \ conf \ httpd.conf; wechseln DocumentRoot "C:/xampp/htdocs"zu #DocumentRoot "C:/Projects"(oder was auch immer Sie wollen).

  2. Bearbeiten Sie ~ Zeile 203 entsprechend Ihrem neuen Standort (in diesem Fall C:/Projects).


Anmerkungen:

  • Sie müssen Schrägstriche "/" anstelle von Schrägstrichen "\" verwenden.
  • Fügen Sie am Ende nicht das nachfolgende "/" ein.
  • Starten Sie Ihren Server neu .
cmcculloh
quelle
13
In Schritt (3) bearbeiten Sie C: \ Windows \ System32 \ drivers \ etc \ hosts. Bewährte Vorgehensweise, um den Editor (Notepad, Notepad ++ oder einen beliebigen Editor) zuerst als Administrator auszuführen. Sie können also direkt im Ordner C: \ Windows \ System32 \ drivers \ etc \ speichern.
CallMeLaNN
3
Wenn Sie 403 Fehler erhalten, verweisen Sie auf diesen Link
Wojtek Owczarczyk
21
Wenn Sie "Order allow" verwenden, verweigern Sie "Win von allen zulassen", und Win7 gibt 403 ERROR zurück, da diese Optionen veraltet sind. Verwendung Erforderlich Alle gewährt. stackoverflow.com/questions/9110179/…
Hywak
4
Nur zu Ihrer Information, dieser Schritt schien für mich nicht notwendig zu sein: Kommentar 19 entfernen (NameVirtualHost *: 80)
Silverback
2
Verwenden Order allow,deny Allow from allhat bei mir nicht funktioniert, aber Require all grantedfunktioniert.
Danny Beckett
96

Sie können es verschieben, indem Sie die DocumentRoot- Einstellung in XAMPP \ apache \ conf \ httpd.conf bearbeiten.

Es sollte derzeit sein:

C: / xampp / htdocs

Ändern Sie es in:

C: / projects / transitCalculator / trunk

Dave Ward
quelle
40
Vergessen Sie nicht, es in BEIDEN Zeilen zu bearbeiten, in denen nach DocumentRoot gefragt wird. Wenn Sie nur die oberste ändern, erhalten Sie Lesezugriffsfehler usw.
Arcolye
2
Dies gilt auch für XAMP Mac?
wütend Kiwi
Kann nun über welche URL auf die Indexseite zugegriffen werden?
Manish Kumar
49

Ein VirtualHost würde auch dafür funktionieren und möglicherweise besser für Sie funktionieren, da Sie mehrere Projekte ohne Unterverzeichnisse hosten können. So geht's:

httpd.conf (oder extra \ httpd-vhosts.conf relativ zu httpd.conf. Nachgestellte Schrägstriche "\" können dazu führen, dass es nicht funktioniert):

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-Datei (normalerweise c: \ windows \ system32 \ drivers \ etc \ hosts):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

Starten Sie nun XAMPP neu und Sie sollten auf http: //transitcalculator.localhost/ zugreifen können, und es wird direkt diesem Verzeichnis zugeordnet.

Dies kann hilfreich sein, wenn Sie versuchen, eine Produktionsumgebung zu replizieren, in der Sie eine Site entwickeln, die sich im Stammverzeichnis eines Domänennamens befindet. Sie können beispielsweise auf Dateien mit absoluten Pfaden verweisen, die auf den Server übertragen werden:

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

In einer Umgebung mit Aliasnamen oder Unterverzeichnissen müssen Sie genau verfolgen, wo sich das Verzeichnis "images" relativ zur aktuellen Datei befindet.

pix0r
quelle
Ich habe mehrere Netzwerklaufwerke auf meinem PC, die Laufwerksbuchstaben zugeordnet sind (z X:\myfolder. B. ). Wenn ich diese Methode verwende, wird die Warnung "Zugriff verboten" angezeigt. Bedeutet dies, dass der Apache-Benutzer keinen Lesezugriff auf das Laufwerk hat?
Harryg
1
Unter Directoryersetzen Order allow,denyund Allow from allmit Require all granted. Siehe stackoverflow.com/questions/9110179/…
Michiel
16

Sie können Apache so einstellen, dass Seiten von überall mit Einschränkungen bereitgestellt werden, diese werden jedoch normalerweise in einer sichereren Form verteilt.

Durch Bearbeiten Ihrer Apache-Dateien (http.conf ist einer der gebräuchlichsten Namen) können Sie einen beliebigen Ordner so einstellen, dass er in Ihrer Webroot angezeigt wird.

BEARBEITEN:

alias myapp c: \ myapp \

Ich habe meine Antwort so bearbeitet, dass sie das Format zum Erstellen eines Alias ​​in der Datei http.conf enthält, das einer Verknüpfung in Windows oder einem Symlink unter un * x ähnelt, bei dem Apache vorgibt, ein Ordner befindet sich in der Webroot. Dies wird Ihnen auf lange Sicht wahrscheinlich nützlicher sein.

funkelt
quelle
10

Wenn Sie versuchen, XAMPP dazu zu bringen, ein Netzwerklaufwerk als Dokumentstamm zu verwenden, müssen Sie UNC-Pfade in httpd.conf verwenden. XAMPP erkennt Ihre zugeordneten Netzlaufwerke nicht.

Zum Beispiel funktioniert Folgendes nicht: DocumentRoot "X: / webroot"

Dies wird jedoch DocumentRoot "//192.168.10.100/webroot" (beachten Sie die Schrägstriche vorwärts, nicht die Schrägstriche hinten).

Jason
quelle
Es funktioniert gut mit meinem zugeordneten Netzlaufwerk.
Sean Kendle
7

Lösung, mit der Apache 2 Websites außerhalb von htdocs hosten kann:

Unter der Anweisung "DocumentRoot" in httpd.conf sollte ein Verzeichnisblock angezeigt werden. Ersetzen Sie diesen Verzeichnisblock durch:

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

Denken Sie daran, diese Konfiguration nicht in einer echten Umgebung zu verwenden

Leandro
quelle
Funktioniert nur für Dateisysteme, die Symlincs unterstützen. Keine Erklärung, warum diese Option nicht verwendet werden sollte.
Danubian Sailor