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.

War es hilfreich?

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.

Docs für magische Konstanten

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top