vaudi: relatives include

Beitrag lesen

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