$_server['document_root']

Hallo,
ich habe eine Seite in einem Unterverzeichniss meines Basisverzeichnisses bei meinem Hoster abgelegt.
Das Basis-Verzeichniss meines Accounts beim Hoster ist: „/var/www/html/account/“
Mein Domainname verweist auf „/var/www/html/account/html/“ (Startpfad aller html-Dokumente).
Die Index-Datei meiner Seite steht im Pfad: „/var/www/html/account/html/seite/“.
Ferner habe ich eine Subdomain: angelegt die auf „/seite“ verweist.
Ich möchte jetzt auf ein File secrets.php in meinem Basis-Verzeichniss zugreifen (also: „/var/www/html/account/secrets.php“) weil dort die Kennwörter für die SQL-Datenbank zugeordnet werden.

Das Problem ist das die Variable $_SERVER[‚DOCUMENT_ROOT‘] je nachdem wie ich auf meine Seite zugreife (domain.de/seite oder seite.domain.de) etwas anderes liefert.
Hat jemand eine Idee wie ich das File secrets.php adressieren kann damit das in beiden Fällen funktioniert. Das Ganze soll natürlich auch bei meiner lokalen Apache-Umgebung also mit einem anderem Basis-Verzeichniss funktionieren und auch nach einem Umzug zu einem anderen Hoster. Ich brauche also so etwas wie eine Variable die unabhängig davon ob ich über meine Subdomain oder über domain.de/seite zugreife das gleiche liefert.

Hallo,

warum greifst du nicht relativ mit …/…/secrets.php zu ?
Ansonsten liefert dirname(__FILE__) den absoluten Pfad zur aktuellen Datei, mir realpath(dirname(__FILE__)."…/…/") solltest du dann auch den Basispfad absolut bekommen.

Alexander

Das ist richtig! Aber wenn ich eine tief verschachtelte Verzeichnissstruktur habe muss ich an jeder Stelle im Pfad etwas anderes eintragen.

Das ist richtig! Aber wenn ich eine tief verschachtelte
Verzeichnissstruktur habe muss ich an jeder Stelle im Pfad
etwas anderes eintragen.

DOCUMENT_ROOT ist nunmal pro virtuellem Host im Apache ggfs. verschieden, da bekommst du eben die Definition für _diesen_ virtuellen Host. Wenn du das DOCUMENT_ROOT für deine Domains grundsätzlich auf eine oder 2 Verzeichnisebenen beschränkt ist, könntest du auch von dort ausgehend mit if (is_file($_SERVER[„DOCUMENT_ROOT“]."…/…")) include(…) die Datei laden, verteilen sich die ROOTs über mehrere Ebenen, hilft das natürlich auch nicht.

Oder du erweiterst den include_path per .htaccess um dein Include-Verzeichnis, so das du die Datei immer ohne Pfad findest, also php_value include_path .:/path/to/pear:/dein/projekt/include
soweit beim Hoster erlaubt.

Viel mehr Möglichkeiten fallen mir da jetzt nicht ein…

Auf den include_path habe ich leider keinen Zugriff.
Notfalls muss ich halt mit …/ arbeiten. Ich dachte es gibt vielleicht einen Trick-17 um mit den $_SERVER[] Variablen was zu basteln. Ich hätte gerne eine allgemeingültige Lösung falls ich mal wieder den Hoster wechseln muss (der Umzug einer Site ist eine Sauarbeit wenn man das vorher nicht mit eingeplant hat)

Und wenn du define(‚PFAD_ZUR_SECRETS_PHP‘, realpath(dirname(__FILE__)."…/…/secrets.php")) in deinen Skripten definierst. Müsstest du ja nur einmal definieren und in deinem aktuellen Skript ohne weiteres nutzen, auch wenn das über mehrere Skripte verfügt. (müsste denn halt nur ausgelagert werden und nach Bedarf hinzugeladen werden)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Und wenn du define(‚PFAD_ZUR_SECRETS_PHP‘,
realpath(dirname(__FILE__)."…/…/secrets.php")) in deinen
Skripten definierst. Müsstest du ja nur einmal definieren und
in deinem aktuellen Skript ohne weiteres nutzen, auch wenn das
über mehrere Skripte verfügt. (müsste denn halt nur
ausgelagert werden und nach Bedarf hinzugeladen werden)

Ich brauche den Pfad zur secret.php in verschiedenen Seiten die sich in verschiedenen Ebenen unterhalb von DOCUMENT_ROOT befinden. Bei der Mehtode muss ich in jeder Ebene den Pfad anders definieren.

Das meinte ich ja mit auslagern… Du packst in das ROOT Verzeichnis der Applikation, ne load_config.php und lädst die halt in jedem Skript hinzu…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das meinte ich ja mit auslagern… Du packst in das ROOT
Verzeichnis der Applikation, ne load_config.php und lädst die
halt in jedem Skript hinzu…

Irgendwie stehe ich im Augenblick etwas auf dem Schlauch.
Das Problem ist doch gerade das DOCUMENT_ROOT sich ändert je nachdem ob ich über die Subdomain oder die Domain komme. Dann habe ich doch das gleiche Adressierungsproblem mit der load_config.php oder?
Kannst du mal ein Beispiel machen.

Noch eine hässliche Variante: ins jeweilige DOCUMENT_ROOT (oder immer eine höher) ein secrets.php legen, wobei die der Subdomain auch nur ein include() der „richtigen“ sein kann.

was sagt den ein RewriteRule dazu … *.domains.de/woauchimmer/secret.php www.domain.de/dahinimmer/secret.php

das wäre dann doch für alle subdomains gleich :smile: bzw dafür gibts ja auch ne Regel :smile:

Meinst du sowas:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

Wenn ja wie bekomme ich raus ob das bei meinem Hoster installiert ist? Ich habe keinen Zugriff auf die Apache-Umgebung.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

Wenn ja wie bekomme ich raus ob das bei meinem Hoster
installiert ist? Ich habe keinen Zugriff auf die
Apache-Umgebung.

<?php print_r(apache_get_modules()); ?>

Ciao
Rudy