PHP - relativ sökväg till fil och inkludering

Tråden skapades och har fått 7 svar. Det senaste inlägget skrevs .
1

Jag har en funktion som jag vill inkludera lite här och där på en sajt. Kruxet är att det finns en relativ sökväg till en fil som utgår från den folder som includefilen ligger i och som ballar ur när includefilen inkluderas i en sida som inte ligger i samma folder? Jag kan inte hårdkoda sökvägen för detta är en fil jag vill kunna använda lite här och där? Finns det något sätt att förklara för php att den skall hämta den här filen relativt från den folder som inkludefilen ligger i och inte från den folder där filen som inkluderar denna ligger?

kan du inte bara skriva "../sökväg/till/din/fil/filen"?

  • Medlem
  • Stockholm
  • 2003-03-11 16:09

Alltså: Filen A inkluderar filen B som inkluderar filen C...

PHP utgår alltid från den fil som laddas från början (A), så all kod som körs i en inkluderad fil funkar som om den fanns i grundfilen. Alltså, ditt inkluderade script har ingen aning om att det är inkluderat.

Tror inte att det finns något sätt att se vilken sökväg filen B har, så du får på något sätt tala om det för den, alternativt tala om för den var den hittar filen C.

Jag brukar ha en konfigurationsfil som håller reda på sökvägarna till alla filer som ska inkluderas. Sen ser jag till att varje A-fil inkluderar den filen (med en relativ sökväg).

Citat:

citera:Skapades ursprungligen av: HL:

Jag brukar ha en konfigurationsfil som håller reda på sökvägarna till alla filer som ska inkluderas. Sen ser jag till att varje A-fil inkluderar den filen (med en relativ sökväg).

Det är så jag löst det i dagsläget, men för att få filerna mer mobila hade det ju varit trevligt om man kunde inkludera filer och de visste var de kom ifrån...

Det här borde funka.
I fil A:
$prefix=../sökväg/till/fil;
include (´$prefix/B´);

I fil B:
include (´$prefix/sökväg/till/fil/C´);

På så vis blir sökvägen rätt från originalfilen. Borde i alla fall.

[ 11. mars 2003, 17:14: Meddelandet ändrat av: ohennig ]

För att utveckla det ytterligare ser min kod ut som vad ohennig föreslår...

Fast det är fortfarande inte vad jag vill skall ske... Jag vill snarare att filen skall exekveras från sitt rätta "hem" och inte "klistras in" i dokumentet, eller ännu snarare - att sökvägen som finns i includefilen till includefil3 modifieras när includefilen hämtas och klistras in i dokumentet... Önsketänkande?

  • Medlem
  • Stockholm
  • 2003-03-11 18:00
Citat:

citera:Skapades ursprungligen av: scooterbabe:
Önsketänkande?

Tror nästan det... Men ta och titta lite på läsarkommentarerna på manualsidan för include(). Där står en hel del, bland annat:

php_value include_path ".:/include/dir"

Den raden kan du sätta i en .htaccess-fil för att tala om för PHP var du lägger dina includes. (Du kan ange flera sökvägar, men se då till att inte ha två includes med samma namn.) Sen är det bara att inludera, helt utan sökvägar.

Det kanske kan vara nåt? (I vanlig ordning har jag inte testat själv, men det ska nog funka.)

Jo fast säg att jag skriver ett litet program som jag vill att alla skall kunna ladda hem bara genom att packa upp foldern på valfritt ställe på valfri server... Då har man inte tillgång till sådana variabler...

Jaja, det funkar som det gör nu och jag får väl skriva en initialize-sida som installerar paketet genom ett par steg...

1
Bevaka tråden