Include/Require mit anderem Startverzeichnis
Koala
- php
Hi,
ich habe ein fertiges Script in einem Unterordner meines Projekts liegen. In dem Projekt sind die Dateien untereinander mit require und include verbinden, wenn ich nun aber eine Datei nicht von diesem Unterverzeichnis, in dem das Script liegt, sondern im Startverzeichnis meines Projekts einbinden möchte, dann stoßen die Includes/Requires immer auf Fehlermeldungen, weil die Dateien in diesem Ordner nicht existiert (es müsste einfach immer nur der Pfad des Unterordners dazu).
Kann man einem PHP-File irgendwie sagen, dass das Script die Includes standardmäßig in einem anderen Verzeichnis macht?
Also zB dass ich in der /test.php den Befehl include(config.php);
aufrufe und die Datei /unterordner/config.php geladen wird?
Ok, habe selber eine Lösung mit set_include_path gefunden, das Problem, was ich nun aber habe, ist, dass alle Pfade mit einem ./ befinnen und dann schein set_include_path nicht zu greifen. Kann man das irgednwie umgehen?
Hi,
Ok, habe selber eine Lösung mit set_include_path gefunden, das Problem, was ich nun aber habe, ist, dass alle Pfade mit einem ./ befinnen und dann schein set_include_path nicht zu greifen. Kann man das irgednwie umgehen?
Nein. ./ referenziert explizit das aktuelle Verzeichnis.
Am besten wäre es, wenn du gar nicht erst den include_path manipulierst, sondern dir an zentraler Stelle einen „Basis-Pfad“ als Konstante festlegst, und diesen als Präfix verwendest wo immer du Dateien einbindest. (Und das muss nicht unbedingt statisch sein, sondern kann auch unter Rückgriff auf Werte wie bspw. $_SERVER['DOCUMENT_ROOT'] oder die magische Konstante __DIR__ dynamisch zum Start des „Haupt-Scriptes“ passieren.)
MfG ChrisB
Super, danke :)
Hi,
Ok, habe selber eine Lösung mit set_include_path gefunden, das Problem, was ich nun aber habe, ist, dass alle Pfade mit einem ./ befinnen und dann schein set_include_path nicht zu greifen. Kann man das irgednwie umgehen?
Nein. ./ referenziert explizit das aktuelle Verzeichnis.
Am besten wäre es, wenn du gar nicht erst den include_path manipulierst, sondern dir an zentraler Stelle einen „Basis-Pfad“ als Konstante festlegst, und diesen als Präfix verwendest wo immer du Dateien einbindest. (Und das muss nicht unbedingt statisch sein, sondern kann auch unter Rückgriff auf Werte wie bspw. $_SERVER['DOCUMENT_ROOT'] oder die magische Konstante __DIR__ dynamisch zum Start des „Haupt-Scriptes“ passieren.)
MfG ChrisB
Tach!
Ok, habe selber eine Lösung mit set_include_path gefunden, das Problem, was ich nun aber habe, ist, dass alle Pfade mit einem ./ befinnen und dann schein set_include_path nicht zu greifen. Kann man das irgednwie umgehen?
Ja, indem man den Punkt weglässt, der ausdrücklich das aktuelle Verzeichnis meint. Oder das aktuelle Verzeichnis wechseln.
dedlfix.
Ok, schade, aber danke für die Antwort.
Tach!
Ok, habe selber eine Lösung mit set_include_path gefunden, das Problem, was ich nun aber habe, ist, dass alle Pfade mit einem ./ befinnen und dann schein set_include_path nicht zu greifen. Kann man das irgednwie umgehen?
Ja, indem man den Punkt weglässt, der ausdrücklich das aktuelle Verzeichnis meint. Oder das aktuelle Verzeichnis wechseln.
dedlfix.
Mahlzeit,
Kann man einem PHP-File irgendwie sagen, dass das Script die Includes standardmäßig in einem anderen Verzeichnis macht?
Du kannst per chdir() das Arbeitsverzeichnis dahin schieben, wo du willst.
chdir('./unterordner');
include 'test.php';
Damit wird die Datei "unterordner/test.php" eingebundne, die sich so benimmt als würde sich alles in /unterordner abspielen.
Hi,
perfekt, danke, das ist genau das, was ich gesucht habe.
Mahlzeit,
Kann man einem PHP-File irgendwie sagen, dass das Script die Includes standardmäßig in einem anderen Verzeichnis macht?
Du kannst per chdir() das Arbeitsverzeichnis dahin schieben, wo du willst.
chdir('./unterordner');
include 'test.php';
>
> Damit wird die Datei "unterordner/test.php" eingebundne, die sich so benimmt als würde sich alles in /unterordner abspielen.
>