echo $_SERVER['document_root']; ...
Bist du sicher, dass du das in Kleinbuchstaben geschrieben hast?
Nun ist es leider so, dass ich den DocumentRoot bei meinem Provider NICHT über das Array $_SERVER holen kann, sondern (lt. meines Providers) so vorgehen muss:
echo preg_replace("/^((/.[^/]*){7}).*/", "$1/", $SCRIPT_FILENAME, 1);
$SCRIPT_FILENAME sollte sicher auch $_SERVER['SCRIPT_FILENAME']. Es sei denn, das PHP-CGI deines Providers ist älter und kennt $_SERVER noch nicht (dann $HTTP_SERVER_VARS).
Ich gehe doch richtig in der Annahme, dass PHP als CGI läuft?
Folglich müsste ich dies vor jedem Upload von meinem lokalem Webserver auf den meines Providers (zumindest 1x) in jeder Datei ändern...
Um mir diese Arbeit zu ersparen, suche ich eine Möglichkeit, den DocumentRoot (auf meinem lokalem Webserver) serverseitig in eine Variable (im Beispiel $SCRIPT_FILENAME) zu schreiben.
Die einzigen Variablen, die man von Clients unbeeinflussbar auf dem Server setzen kann sind Environmentvariablen $_ENV (bzw. $HTTP_ENV_VARS)
Weiß jemand von euch, ob und wenn ja wie dies funktioniert?
So eine ENV-Variable müsstest du setzen, bevor das PHP-CGI aufgerufen wird. Dazu brauchst du die Erlaubnis, das in der .htaccess mittels
SetEnv SPECIAL_PATH /foo/bin
einzutragen.
Oder gibt es sogar eine bessere Lösungs-Variante für mein Problem?
So vielleicht?
$documentRoot = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : xx;
statt xx bitte das was dein Provider gesagt hat eintragen.