Hallöchen,
Hab ich.
Lies meinen Beitrag evtl etwas genauer...
Das interpretiere ich jetzt so:
Beim Aufruf von script.php direkt wird abc.php eingebunden.
ABER
Beim Aufruf von script.php über /scripts/script.php wird abc.php eingebunden, es müsste aber die /scripts/abc.php sein.
[...Wenn ich in einer Datei zum Beispiel stehen hab "include 'abc.php'" (also 'ne relative Angabe) ...]
Dann schreib dort (in die script.php) z.B. hin:
if(!isset($IncludeOrdner))
$IncludeOrdner = '';
include($IncludeOrdner.'abc.php');
Da beim direkten Aufruf $IncludeOrdner undefiniert ist, nimmt include() die abc.php in dem Ordner, wo die script.php steht.
[...und rufe die Datei aus einem anderen Ordner via include "/skripts/skript.php" auf...]
Und hier schreibst du:
$IncludeOrdner = 'skripts/';
for($i=0; $i<5; $i++) { // die 5 beschränkt die Suche auf 5 Ebenen aufwärts
if(!is_dir($IncludeOrdner)) {
$IncludeOrdner='../'.$IncludeOrdner;
}
else {
break;
}
}
include($IncludeOrdner.'script.php');
Rufst du von woanders her auf, ist $IncludeOrdner definiert mit der Pfadangabe, die script.php relativ zur aufrufenden Datei macht.
Da $IncludeOrdner jetzt gesetzt ist, ist die abc.php im include ebenfalls relativ zur aufrufenden Datei.
Eine abc.php im gleichen Ordner wie die aufrufende Datei wird jetzt ignoriert.
MfG
vaudi