$_SERVER["DOCUMENT_ROOT"] in CLI nutzen

  • Hallo zusammen

    Ich versuche verzweifelt via Command Line an die Servervariable DOCUMENT_ROOT zu gelangen. Leider geht das nicht.

    <?php
    error_reporting(E_ALL);
    echo $_SERVER['DOCUMENT_ROOT'];
    ?>

    Ergibt nur eine leere Zeile, keine Fehler.

    Register Globals ist off, OS ist Win2003 Server und PHP ist Version 5.2.4.
    Kann mir jemand helfen?

    Grüsse
    Stef

  • vielleicht ist dein server so eingestellt dass er die document-root nicht ausgibt (sicherheitslücke)

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hi dodo.

    Danke für deine Antwort.
    Sollte eigentlich nicht sein denn wenn ich dieselbe Datei über den Browser aufrufe funktionierts :smilie085:

  • hi No0ob

    habs soeben gemacht. komischerweise kommen alle variablen, ausser document_root. LOL? Ist da was an meiner php.ini verschossen? Die ist zwar im originalzustand von XAMPP...

    KOMISCH!?

  • Wird der Document_root bei phpinfo(); ausgegeben?
    Ansonsten benutz $_SERVER['SCRIPT_FILENAME'] und entferne einfach den Dateinamen, der hinten zusätzlich ans eigentliche DOCUMENT_ROOT angehöngt ist

  • ja, mit phpinfo(); wird document_root ausgegeben. wie gesagt, auch wenn ich ein echo von $_SERVER['DOCUMENT_ROOT']; über den Browser ansehe, klappts. Einfach über die CLI nicht.

    Das mit dem $_SERVER['SCRIPT_FILENAME'] hab ich soeben versucht.
    Da hab ich das Problem, dass er mir nur den Pfad und den Dateinamen angibt, aber ohne Laufwerksbuchstabe.

    Wenn ich wüsste dass nur ich das zeug brauche, würd ich's ja statisch programmieren. Aber leider ist's für die Schule und das Skript sollte schlussendlich auch auf anderen Webserver (andere Laufwerke, Document-Roots) funktionieren...

    Grml

  • Ich habs soeben noch auf zwei anderen Server versucht, "leider" auch Windows und XAMPP. Auch dort gehts nicht. Werd's bei Gelegenheit noch mit ner CentOS Kiste versuchen....

  • Im CLI Modus gibt es diese Variable nicht, auch nicht auf Linux Hosts.

    Ein Grund ist das kein WebServer läuft der den DOCUMENT_ROOT definiert.
    Normalerweise definieren Apache/Lighttpd etc. den document_root, da aber php direkt aufgerufen wird wird diese Variable nicht definiert.

    Eine mögliche Lösung für dein Problem.

    Code
    if(!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] =  dirname(getcwd());
    }