rootdir in websiten

  • Hallo,


    ich habe eine Website und will verschiedene Unterordner auf dem Server, also im Stammverzeichnis erstellen. Wenn ich jetzt aber in der Datei "impressum/index.php" (Bsp.) auf die ganzen anderen Dateien verweisen - z.B. die script.php, header.php etc., dann funktioniert dies ja nicht, weil die genannten letzten beiden Files sich ja im Stammordner befinden, und nicht im Unterordner "impressum".


    Nun möchte ich aber nicht vor jedem include "../" eingeben müssen - ich bin mir ziemlich sicher, dass es mit "$rootdir" irgendwie möglich war, die gesamte PHP-Datei auf das Stammverzeichnis zu verweisen. Nur wie geht das?


    Danke schonmal

  • Probier's damit:
    In der impressum/index.php alle includes/requires folgendermaßen umschreiben:


    include 'header.php';
    wird zu
    include $_SERVER['DOCUMENT_ROOT'].'/header.php';


    Klappt bei nem Apachen wunderbar ;)
    Und vergiss nicht die ganzen Grafiken und Stylesheets dann halt in absoluten Pfaden anzugeben, sonst wird er die wohl kaum finden ;)


    bye =)


    //edit: Alternative mit


    An den Anfang der Datei impressum/index.php:
    set_include_path(get_include_path().PATH_SEPARATOR.$_SERVER['DOCUMENT_ROOT']);


    Dann kannst auch mit include 'header.php'; includen =)

    :D <plaintext>

  • Das untere wäre genau das, was ich brauche! Wenn das funktioniert, müsste ich ja nicht überall noch den Pfad ändern.


    Aber leider klappt's irgendwie nicht .... hab's so gemacht:



    Aber es wird das Root nicht erkannt.


    Schlimmer noch: Die includes werden komplett aus dem Quelltext gelöscht. Oo

  • Mach mal danach ein "echo get_include_path();" um zu schauen, ob du jetzt den richtigen Suchpfad für die includes hast. Hast du dir meinen Link eigentlich mal angeschaut? Ach ja, wenn es dringend benötigte includes sind, würde ich lieber require statt incude nehmen. Weißt du, warum die includes nicht funktionieren? Was sagt die Fehler-Ausgabe (bzw. Log-Datei). Bei Bedarf kannst du mit error_reporting (am besten zum Debuggen error_reporting(E_ALL)) die Fehlerausgabe verfeinern. In deinem Code-Ausschnitt fehlt noch was ganz wichtiges: Wo sind die Includes? (Hoffentlich vor dem set_include_path.) Wie sehen die genau aus?

  • Also, erstmal hatte ich den Fehler gemacht, dass die Includes sich alle unter der Zeile, in der ich das Document_Root definiere, befanden. Das wurde nun geändert, aber es tritt keine Veränderung auf.


    Es wird bei der ganzen Sache jetzt auf dem Server (direkt richtiger Server, nicht Apache) folgendes Root-Verzeichnis ausgelesen:


    .:/usr/local/lib/php:/homepages/17/d107434591/htdocs


    Keine Ahung, klingt irgendwie komisch. Ich hätte mir einen Pfad á la http://www.url.de/ gewünscht ... kann das so trotzdem stimmen?


    Nochmal als Nachfrage, ob wir im Moment eigentlich das gleiche Problem verfolgen. Ich gehe jetzt davon aus, dass dieser mir von euch genannte Root-Erkennungs-Code (was für ein Wort) ermöglicht, dass die includes direkt aus dem Stammverzeichnis ausgelesen werden. D.h., in der Datei "index.php" im Unterordner "Impressum" wird etwas aus dem Stammverzeichnis per include eingefügt - undzwar so:


    <?
    include("header.php");
    ?>


    Dabei erkennt das "System" automatisch, dass sich diese Datei im Stammverzeichnis und nicht im Unterordner Impressum befindet.


    So ist es, wie ich es will - wird mir dies jetzt anhand dieses Codes


    PHP
    set_include_path(get_include_path().PATH_SEPARATOR.$_SERVER['DOCUMENT_ROOT']);


    ermöglicht?


    Cyber-Shadow: sorry, hatte deinen Link gar nicht gesehen, deswegen konnte ich ja auch mit deinem Post nichts anfangen. ;)
    Hab's mir jetzt angesehen, aber ich finde da nicht so richtig die Gründe für mein Problem ... eigentlich sehe ich den oben genannten Code ein, und eigentlich müsste es ja auch klappen.


    Warum die includes nicht funktionieren, ist ja eigentlich logisch - es wird der Pfad einfach nicht gefunden. Dabei bekomme ich aber keine Fehlermeldung - im Quelltext sowie in der Anzeige im Browser fehlen die includes einfach. Das sieht dann so aus:



    Zitat

    <!--- main navi --->


    hier war das include


    <!--- end main navi --->



    Ich bin leicht verzweifelt. Ich hab mir das überhaupt nicht so kompliziert vorgestellt. ^^

  • Zitat

    .:/usr/local/lib/php:/homepages/17/d107434591/htdocs


    Keine Ahung, klingt irgendwie komisch. Ich hätte mir einen Pfad á la http://www.url.de/ gewünscht ... kann das so trotzdem stimmen?

    Ja, das stimmt so. Dort stehen immer lokale Verzeichnisse vom Server, keine URLs.


    Die Konfigurations-Variable include_path definiert, in welchen Verzeichnissen include-Dateien gesucht werden. In deinem Fall wären das also "." (also jeweils das Verzeichnis, in dem sich das Script befindet), "usr/local/lib/php" und "/homepages/17/d107434591/htdocs", was wohl das Rootverzeichnis deines Webspaces sein dürfte. Soweit stimmt also alles.


    Zitat

    Warum die includes nicht funktionieren, ist ja eigentlich logisch - es wird der Pfad einfach nicht gefunden. Dabei bekomme ich aber keine Fehlermeldung - im Quelltext sowie in der Anzeige im Browser fehlen die includes einfach.

    So klar ist das nicht. Wenn die Include-Datei im oben genannten Verzeichnis liegt, müsste sie auch gefunden werden. Es kann aber noch andere Gründe geben, z.B. dass die Dateiberechtigungen für die Include-Dateien nicht stimmen, oder es aus sonst irgend welchen Gründen nicht erlaubt ist, aus diesem Verzeichnis Dateien einzubinden. Deshalb mein Tipp, die Fehlerausgabe zu verändern. Es kann auch sein, dass die Fehler in Log-Dateien stehen und nicht im Browser ausgegeben werden.

  • Zitat

    Original geschrieben von Cyber-Shadow
    Wo sind die Includes? (Hoffentlich vor dem set_include_path.) Wie sehen die genau aus?


    Du meinst wohl hoffentlich *nach* dem set_include_path, oder? ;)


    andone: Poste einfach mal deine impressum.php in voller Länge, dann kann man Dir am besten helfen ;)

    :D <plaintext>

  • Zitat

    Du meinst wohl hoffentlich *nach* dem set_include_path, oder? ;)

    Ähm, ja... :rolleyes:


    Zitat

    andone: Poste einfach mal deine impressum.php in voller Länge, dann kann man Dir am besten helfen ;)

    Ja, das wäre gut, und am besten auch, in welchen Verzeichnissen genau die Dateien auf dem Server liegen, falls du das weißt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!