PHP: Wie man die Dokument-root von innen ein user-Verzeichnis?
Ich entwickeln und bereitstellen von verschiedenen PHP-Anwendungen für verschiedene Umgebungen. Vor allem auf Entwicklungs-Umgebungen, Sie können überall sein, von document_root auf /Users/ich/Sites/oder auch /Users/ich/Sites/someapp/
Innerhalb dieser Anwendungen, die ich brauche, um zu wissen, wo die 'Anwendung root' ist, einmal als der eigentliche Weg und einmal als URL. Pfad ist kein problem. Sagen wir, ich habe ein bootstrap.php in der app-root-Verzeichnis, welche nicht:
define("BASE_DIR", realpath(dirname(__FILE__)));
Allerdings habe ich Probleme zuverlässig zu bekommen die Basis-URL. Auf die meisten Umgebungen einfach abziehen Dokument-root von BASE_DIR funktioniert:
define("BASE_URL", str_replace($_SERVER['DOCUMENT_ROOT'],'',BASE_DIR) . "/");
Nun, mein problem ist: Das funktioniert nicht in Umgebungen, in denen meine app liegt in meinem user-Verzeichnis, weil PHP noch sieht die wichtigsten document-root. Hat jemand dieses problem gelöst?
Danke, aber ich habe nur versucht, die Lösung und das Ergebnis gibt es abhängig von der Lage der Datei mit dem angegebenen code.
Oder vielmehr: Die Lösung erfordert die bootstrap.php immer im root-Verzeichnis (obwohl ich sagte ansonsten der Einfachheit halber, ich hatte es in einem "includes/" Verzeichnis). Aber ich denke, die einfachste Lösung ist, verschieben Sie es oben und verwenden Sie die hier verlinkte Lösung.
InformationsquelleAutor Stefan | 2011-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alles was mit realpath() und DOCUMENT_ROOT ist zum scheitern verurteilt schwer, wenn es die server hat-Aliase konfiguriert. Betrachten wir ein Szenario, in dem der Apache hat eine Konfiguration wie diese:
Ist und Sie Zugriff auf ein Skript bei
example.com/testalias/script.php
.Wird das script zurück:
und noch den rest der Seite tatsächlich existiert in
/home/httpd/html
Haben Sie vielleicht mehr Glück Rekonstruktion der URL basierend auf
$_SERVER['SCRIPT_NAME']
, das ist der Pfad/Skript-name Teil der URL:Ich verwende diese, wenn ich mit Alias-Verzeichnis str_replace($_SERVER['SCRIPT_NAME'], ", $_SERVER['SCRIPT_FILENAME'])
Das problem mit der SKRIPTNAME ist, dass es nicht statisch ist, denn es basiert auf der der name des aktuell ausgeführten Skripts. Vor Apache 2.3.x wird im Volksmund angenommen, dass wir verwenden können, CONTEXT_PREFIX variable. Ich fürchte es gibt keine Lösung.
InformationsquelleAutor Marc B