(Vorbemerkung: Es gibt scheinbar viele Varianten dieser Frage bereits hier, aber alle scheinen sich auf den Speicherort der physischen PHP-Dateien selbst zu konzentrieren ., nicht die Web URL Lage der Dinge, das ist, was ich nach)
INTRO 1:
ich habe eine kleine "Website" mit dem folgenden physikalischen fil eSystem Struktur:
variable.php
folder
test.php
(Mit anderen Worten, variable.php
in der obersten Ebene, und test.php
im Ordner folder
.)
Hier sind die Dateiinhalte:
<?php
//variable.php
$basePath = dirname($_SERVER['SCRIPT_NAME']);
?>
<?php
//test.php
include("../variables.php");
echo $basePath;
?>
INTRO 2:
Wenn diese "Website" vor Ort zu entwickeln, ist es unter dieser Adresse:
http://localhost/~noob/test-website
FRAGE:
Das Problem ist, dass wenn ich http://localhost/~noob/test-website/folder/test.php
in meinem Browser setzen, es ausdruckt /~noob/test-website/folder/
.
Ich möchte es ausdrucken /~noob/test-website
(die "web location" von variable.php). Mit anderen Worten, ich möchte globalen Zugriff von allen Dateien haben, noch tiefer in der Dateisystemhierarchie, bis /~noob/test-website
. Wie erreiche ich das?
Ich möchte diesen Pfad natürlich nicht fest codieren. Der Grund ist, dass wenn ich ihn auf einen Produktionsserver hochlade, der Standort in etwas vernünftigeres wie http://example.com/
geändert wird (und ich möchte das hardcoded nicht ändern müssen) Pfad nach dem Hochladen auf den Server, daher diese Frage natürlich).
Sie diese Dateien für einschließlich tun, oder etwas anderes? –
@ZachRattner ich dies tue (möglicherweise unter anderem) beziehen Sie sich auf CSS-Dateien innerhalb meiner HTML-Datei les. Das Navigieren mit ".." funktioniert nicht so gut, wenn Sie zum Umschreiben von URLs mod_rewrite verwenden. Das neigt dazu, den Standardmechanismus zu glauben, dass Sie sich in einem Ordner befinden, der nicht wirklich existiert (da mod_rewrite gefälschte "Ordner" erstellen kann). Ein globaler "Basis" -Pfad löst dieses Problem. Das einzige Problem ist, dass es derzeit hart codiert ist. Ich möchte diesen lästigen hartcodierten Pfad entfernen und allgemein machen. – NoobOverflow
@NoobOverflow Ich habe Ihre Prämie bemerkt; Meins und Leighs Antwort sind leicht unterschiedliche Ansätze für dasselbe Ziel. Wenn Leighs Antwort für dich funktioniert dann toll, aber ansonsten poste bitte die in meinem Kommentar genannten Werte auf meine Antwort und ich werde mich entsprechend anpassen. – cmbuckley