PHP include Path Fragen

Domi83

Rear Admiral
Registriert
Feb. 2010
Beiträge
5.308
Moin Leute, ich habe da mal eine PHP basierte Frage :)
Wenn ich eine Internetseite baue, habe ich meistens einen Ordner "/inc/", wo eine config.php oder global.php drin ist, die immer als erstes eingebunden wird. Der Pfad zu dieser Datei wird immer über eine der möglichen Varianten angegeben,
PHP:
require_once('/srv/vhost/xxx/htdocs/inc/global.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/inc/global.php');
require_once('../inc/global.php');
Das ist ja im Prinzip gar kein Problem, ist ja nur eine Zeile und gut ist. Durch ein Script was ich gesehen hatte bin ich auf den Befehl set_include_path(); gestoßen. Macht es Sinn, mit diesem Befehl zu arbeiten?

So bräuchte ich dann nämlich in meiner "global.php" nur einmal diesen include Pfad setzen, und könnte meine "class.xx.php" Dateien ohne den kompletten Pfad angeben zu müssen einbinden. Richtig?

Ich weiß auch dass es eine autoloader Möglichkeit gibt, diese soll wohl komfortable zum einbinden von Klassen sein, aber auch mit Risiken verbunden sein. Es geht mir eigentlich darum, dass man komfortable die Dateien einbinden kann und nicht fixe Pfadangaben verwenden muss :)

Da wollte ich halt mal fragen wie Ihr das so anstellt / realisiert.
Gruß, Domi
 
Tu dir den gefallen und arbeite nie mit absoluten Pfaden :) Immer relative Pfade und ggf. das Document-Root mit einbeziehen.

Und was dir vieles einfacher macht, wäre einen Controller zu verwenden. D.h. es gibt eine Index.php die als Einstiegspunkt für alle Requests verwendet wird. Du wirst nie ne andere Datei als die index.php verlinken. Eventuell für schöne URLs eine rewriterule im Apache definieren.
 
Joa, das Thema mit den absoluten Pfaden kenne ich zu gut. Kaum verschiebst Du einen Ordner zum testen in einen Unterordner, hast Du Spaß. Wird eine Domain von Server zu Server verschoben, hast Du auch richtig Freude...

Und was den "controller" angeht, vermute ich mal Du meinst das Arbeiten mit GET Parametern, oder? Sprich, ich habe eine index.php und sage so etwas wie index.php?seite=1, richtig?

Nachtrag: Das mit dem include Pfad habe ich eben einmal ausprobiert. Ist ganz nett, dann bräuchte ich mir in der global.php nur eine kleine Zeile einfügen und gut.. Wobei mein Kollege sich eben gewünscht hätte, dass man das in die php.ini packt.. aber das wird dann mit den unterschiedlichen Domains problematisch.. :D
PHP:
ini_set("include_path", get_include_path().PATH_SEPARATOR.$_SERVER['DOCUMENT_ROOT'].'/inc');
 
Zuletzt bearbeitet:
Ja, Beispielsweise. Du kannst mit nem Apache Webserver auch sagen, dass alle Requests implizit auf die index.php gehen sollen. Lies dich mal über mod_rewrite schlau :)
 
Args.. jetzt hab ich ein Edit von meinem Post vorhin gemacht und gar nicht gesehen das Du schon geantwortet hattest :D

Aber mod_rewrite kenne ich.. dafür haben wir ja unsere .htaccess frisiert :)
Code:
RewriteRule ^(.*)\.html$ index.php?test=$1 [L]
Wobei man damit viele verschiedene Varianten aufbauen kann, dass ist nur mal eben eine Zeile aus der Datei. Aber dann weiß ich was Du meinst. Das Prinzip mit der RewriteRule versuche ich gerade unserem Azubi zu erklären, der immer glaubt das die URL "index.php?test=bla" nicht existieren müsste :D
 
Zurück
Oben