PHP Referenzpunkt bei relativen Pfaden in eingebundenen PHP-Dateien

david96

Ensign
Registriert
März 2007
Beiträge
218
Hallo,

ich habe folgendes Problem:

Ich binde auf einer Website PHP-Dateien per require in "Mutterdateien" ein. Darin binde ich Bilder ein, deren Pfad ich relativ angebe. Als Ausgangspunkt für diesen relativen Pfad wird ja normal das Verzeichnis der "Mutterdatei" genommen.

So funktionierte bis jetzt auch alles, aber seit einem Serverwechsel ist plötzlich der Ausgangspunkt für den Pfad das Verzeichnis der eingebundenen Datei. Wenn ich jetzt alle Pfade manuell ändern würde, hätte ich a) bei einem erneuten Serverwechsel das gleiche Problem wieder und b) eine Menge (hoffentlich) unnötiger Arbeit.

Ich denke, da kann man irgendwo in der php.ini oder ähnlichem etwas einstellen, was es mir ermöglicht, auf dem neuen Server genau so zu arbeiten wie auf dem alten, oder?

Viele Grüße

David
 
Bist du dir ganz sicher, dass es daran liegt?

Kannst du mal zeigen, wie eine solche Zeile bei dir aussieht (der require-Aufruf)?
 
Normal wäre tatsächlich, dass include & require so agieren, als wäre das Code direkt in der Mutter-Datei...

Simple Lösung: Leg dir ne "Basedir"-Konstante an, in die du beim Start den absoluten Pfad der Mutterdatei setzt. Danach arbeitest du nur noch mit absoluten Pfaden und fertig.
 
Aber es muss doch auch irgendwas am Server umzustellen sein, oder?

Auf dem alten Server hatte ich mit dem selben Code nie Probleme, und lokal bei mir mit XAMPP läuft es auch ganz normal. Dass quasi die Mutterdatei auch wieder eingebunden ist, also es 3 Ebenen gibt, dürfte ja auch kein Problem sein, weil die 2. Ebene ja automatisch sich verhalten würde, als wäre sie im Verzeichnis der ersten.

Trotzdem Danke für den Tipp, damit werde ich mir wohl behelfen, wenn es keine andere Lösung gibt ;).
 
PHP:
# Docroot
(DIRECTORY_SEPARATOR == '/') ? $path = dirname(__FILE__) : $path = str_replace('\\', '/', dirname(__FILE__)) ;
define('DOCROOT', $path);

# initialize
require_once DOCROOT . '/core/bootstrap.php';

löst neben dem include/require pfad problem auch gleich noch den unterschied bei windows/unix/mac pfaden.
 
da halte ich das eigentlich fast schon für eleganter...
define('DOCROOT', str_replace('\\', '/', dirname(__FILE__)));
 

Ähnliche Themen

Zurück
Oben