Pfäde mit include
Björn
- php
Hallo,
Beim Programmieren meiner Homepage bin ich auf folgendes Problem gestoßen:
Ich wollte, um meine Homepage leichter verwalten zu können, möglichst alle Sachen, die auf jeder Seite der Homepage angezeigt werden, mit dem Befehl <? include ("xyz") ?> einbauen. Alles kein Problem, jedoch funktioniert das nur, wenn sich die Dateien auch in dem Ordner befinden, in dem sich die inkludierten Dateien befinden.
Immer wenn ich dann ein /xyz eingebe, denkt das PHP-Script bzw der Server, dass es sich um den absoluten Pfad handelt.
Jetzt zum Problem: Ich möchte die nötigen Dateien, die inkludiert werden (z.B. menu.php) im Hauptordner einer Domain haben (bzw. einem Unterordner, wenn die Domain auch wieder in mehrere Bereiche aufgeteilt ist!). Nun ist es so, dass der Homepageteil viele Unterordner hat z.B. /Haupordner/Unterordner1/Unterordner2/index.php. In der index.php findet sich nun der include-Befehl. Jedoch wirkt dieser nicht, da ja nach einer Datei gesucht wird, die sich in dem Ordner befindet. Wie kann ich es einrichten, dass dennoch z.B. die Datei menu.php aus dem Ordner /Hauptordner/ inkludiert wird, OHNE dass ich noch den absoluten Pfad eingeben brauche?
Bzw. geht es, dass ich den absoluten Pfad auch wieder in einer Datei (functions.inc.php) angebe und dann durch ein require in jede Datei bringen kann? Problem dabei ist aber wieder, dass dann wohl die functions.inc.php in jeden Ordner müsste. Oder weiß jemand wie das da auch ohne ginge?
Sinn soll sein, dass ich im Falle einer Umstrukturierung oder eines Serverumzuges, wo sich der Serverpfad ändert, nicht alle Dateien umschreiben brauche, im Endeffekt werden das nämlich sehr viele sein!
Ich hoffe, ich habe das ganze Problem nicht zu kompliziert erläutert und hoffe, dass mir jemand helfen kann!
Schönen Adventssonntag noch und Danke,
Gruß,
Björn
Liebe Grüße,
Björn
Hallo,
ich hoffe ich hab das richtig verstanden. Natürlich kannst du dateien aus einem unterordner "includieren":
include("oddner1/ordner2/xyz.php");
Bei Überordnern: include("../xyz.php");
Tschau
Tobias
Hallo,
Ich wollte, um meine Homepage leichter verwalten zu können, möglichst alle Sachen, die auf jeder Seite der Homepage angezeigt werden, mit dem Befehl <? include ("xyz") ?> einbauen. Alles kein Problem, jedoch funktioniert das nur, wenn sich die Dateien auch in dem Ordner befinden, in dem sich die inkludierten Dateien befinden.
Nein falsch, hast du schon einmal was von "../" gehört. Sollte eigentlich zum Grundwissen gehören nachdem man das erste Bild in seine Homepage gemacht hat!
Immer wenn ich dann ein /xyz eingebe, denkt das PHP-Script bzw der Server, dass es sich um den absoluten Pfad handelt.
wenn man "/" ein gibt dann ist es ja auch ein absoluter Pfad!
Jetzt zum Problem: Ich möchte die nötigen Dateien, die inkludiert werden (z.B. menu.php) im Hauptordner einer Domain haben (bzw. einem Unterordner, wenn die Domain auch wieder in mehrere Bereiche aufgeteilt ist!). Nun ist es so, dass der Homepageteil viele Unterordner hat z.B. /Haupordner/Unterordner1/Unterordner2/index.php. In der index.php findet sich nun der include-Befehl. Jedoch wirkt dieser nicht, da ja nach einer Datei gesucht wird, die sich in dem Ordner befindet. Wie kann ich es einrichten, dass dennoch z.B. die Datei menu.php aus dem Ordner /Hauptordner/ inkludiert wird, OHNE dass ich noch den absoluten Pfad eingeben brauche?
Ja es geht!
Bzw. geht es, dass ich den absoluten Pfad auch wieder in einer Datei (functions.inc.php) angebe und dann durch ein require in jede Datei bringen kann? Problem dabei ist aber wieder, dass dann wohl die functions.inc.php in jeden Ordner müsste. Oder weiß jemand wie das da auch ohne ginge?
Ja es geht auch ohne!
Sinn soll sein, dass ich im Falle einer Umstrukturierung oder eines Serverumzuges, wo sich der Serverpfad ändert, nicht alle Dateien umschreiben brauche, im Endeffekt werden das nämlich sehr viele sein!
So sollte es sein! Und jetzt zu einer besseren Lösung als einfach "../" zu benutzen:
packe in jeden ordner deiner hompage eine datei z.B. "navi.inc" die folgendes enthält!
<?php
$path = "../../../"; //Pfad der aus dem immomentige Verzeichnis in das Verzeichnis "Haupordner" führt
//Also der Pfad ins Heuptverzeichnis deiner Homepage nicht des Servers!
?>
Und dann bei jedem Include:
include("./area.inc");
include($path."functions.inc.php"); //Das ist nun der Pfad zur functions.inc.php im Hauptordner deiner HP
Hello,
mach Dir mal eine info-Seite, also
<?php ### info.php ###
phpinfo();
?>
und dann such mal nach "include_path".
Und dann schaust Du mal alles an, was es unter http://www.google.com/search?q=include_path+site:www.php.net&l=de
so zu lesen gibt.
Ich hoffe, dass der include_path deines PHP für Dich erreichbar ist.
sonst musst Du eben den Pfad mit set_include_path() um den deinigen erweitern.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
include() ist ein mächtiger und gefährlicher Befehl, wenn man nicht auf ihn aufpasst. Genauso wie eval().
Beiden sollte man niemals Benutzereigaben direkt zuführen.
Aßderdem solltest Du include_once() benutzen, das ist programmiertechnisch schon etwas sicherer.
Dein Include-Path sollte IMMER außerhalb der Document-Root liegen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
include() ist ein mächtiger und gefährlicher Befehl, wenn man nicht auf ihn aufpasst. Genauso wie eval().
Beiden sollte man niemals Benutzereigaben direkt zuführen.
Wie meinst du das? Was genau ist daran so gefährlich?
Außderdem solltest Du include_once() benutzen, das ist programmiertechnisch schon etwas sicherer.
Was ist daran der unterschied zu include?
Dein Include-Path sollte IMMER außerhalb der Document-Root liegen.
Warum denn? Dann wäre ja aber alles viel schwerer zu Programmieren?!
Liebe Grüße,
Björn