DOCUMENT_ROOT ist nicht vollständig, Domänenordner fehlt
-
28-10-2019 - |
Frage
Ich habe bisher viele Threads durchsucht, kann aber keine Lösung finden. In einem meiner PHP-Skripte versuche ich, einen Server-Dokumentstamm zu erhalten, aber der Wert, den ich erhalte, ist nicht vollständig. Es fehlt einfach der Domänenordner. Ich glaube, es liegt am Teilen von Hosting oder etwas anderem.
Hier ist die aktuelle Methode, die ich verwende:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
und der Pfad, den ich bekomme, ist wie folgt:
/home/content/01/0151247/html
obwohl ich weiß, dass es so sein sollte:
/home/content/01/0151247/html/mydomain
Ich weiß, wie ich es mit SCRIPT_NAME verglichen habe, und ich sehe die Mydomain dort im Pfad.
Hoffe, jemand könnte mich leiten.
Vielen Dank und Entschuldigung, dass Sie wahrscheinlich noch tausend Mal dieselbe Frage über die Community gestellt haben. Ich habe die Dinge von hier aus wirklich ausprobiert. Bisher hilft mir nichts.
UPDATE
Leider kann ich meine Indexdatei nicht einfach mit DIR verwenden, da es sich um ein WordPress-Setup handelt und ich an einem separaten Ordner arbeite, in dem ich einige WordPress-Funktionen einbinde, aber dafür benötige ich eine document_root. Wenn das helfen würde.
UPDATE
Anscheinend hat der folgende Weg meinen Fall gelöst, vielleicht hilft es eines Tages jemandem:
realpath($_SERVER["SUBDOMAIN_DOCUMENT_ROOT"]);
Grundsätzlich aufgrund des Server-Setups und der als Subdomain konfigurierten Domäne.
Vielen Dank an alle, die teilgenommen haben.
Lösung
Vor PHP 5.3 können Sie eine Datei in das gewünschte Verzeichnis einfügen und eine Konstante definieren:
define('ROOT_DIR', dirname( __FILE__ ));
Nach 5.3 können Sie einfach Folgendes tun:
define('ROOT_DIR', __DIR__);
Die Idee ist, dass dies in einem generischen Codetagcode enthalten ist, der jedes Mal enthalten ist, wenn die Anwendung ausgeführt wird.
Andere Tipps
UPDATE
In der Konfigurationsdatei können Sie einfach die DOCUMENT_ROOT
-Variable anhängen:
$_SERVER['DOCUMENT_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/mydomain';
Und das sollte sich für Sie erledigen.
Alte Lösung
Der DOCUMENT_ROOT
ist eine vom Server festgelegte Umgebungsvariable.Wenn dies also auf Shared Hosting erfolgt, können Sie keine Änderungen vornehmen.Eine Alternative besteht darin, eine eigene Konstante festzulegen. In einer Datei vom Typ config
, die auf Ihren Seiten enthalten ist, können Sie Folgendes tun:
define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/mydomain');
Und dann verwenden Sie einfach diese Konstante anstelle von $_SERVER['DOCUMENT_ROOT']
.Die andere Möglichkeit besteht darin, Ihren Gastgeber zu kontaktieren und sich danach zu erkundigen. Vielleicht war es ein Versehen von seiner Seite und sie werden es beheben.
EDIT
Wahrscheinlich ist es besser, den __DIR__
zu verwenden, über den andere geschrieben haben, da der DOCUMENT_ROOT
auf verschiedene Elemente eingestellt werden kann und Sie zumindest mit dem __DIR__
jedes Mal ein genaues Verzeichnis erhalten sollten.
Um das Stammverzeichnis eines Ordners in PHP zu erhalten, verwende ich dies in meiner Indexdatei:
define('ROOT', dirname(__FILE__)); // __DIR__ will work under PHP 5.3