Gå til innhold

PHP og include_path


Anbefalte innlegg

Jeg har noen php-filer jeg benytter 'include' på, men det ser ut til at det er et problem å få lest de fra sub-directories:

 

Fra rot-nivå for website'n har jeg to sub-directories (disse ligger begge et nivå ned);

includes/

sql/

 

Planen var at jeg skulle samle alle filer jeg bruker 'include' på , ja - du gjettet riktig, i directoriet 'include'.

 

Men hvis jeg i en fil i 'sql'-directoriet prøver meg på

include('../includes/en_fin-fin_fil.php');

går ikke det veldig bra, og feilmeldingen klager på at filen ikke finnes.

 

 

Tips, anyone?

Endret av Xqtor
Lenke til kommentar
Videoannonse
Annonse

Men når 'includes'-katalogen og 'sql'-katalogen ligger på samme nivå må jeg jo først ut av 'sql'-katalogen (../ ) - det ligger ingen 'includes'-katalog i sql-katalogen (?).

 

Kan jeg evt. definere en variabel (f.eks. $include_path ) og så bruke sessions for å håndtere denne, slik at jeg kan henvise til '$include_path/en_fin-fin_fil.php' ?

Lenke til kommentar

Jeg pleier å løse dette med å definere en konstant "DIR_MAIN" i hovedfilen som inneholder den relative stien til dokument-roten. Også definerer jeg en ny konstant 'DIR_INCLUDES' som dette:

define('DIR_INCLUDES', DIR_MAIN . '../');

Da kan de filene du inkluderer også benytte seg av mappe-konstantene

Dette er spesielt kjekt vis du har PHP-filer på siden som ikke ligger i rot-mappa.

 

PS: Glem sessions. Det har ingenting med dette å gjøre.

Lenke til kommentar

Skjønner hva du mener ja, har faktisk hvert på utkikk etter en bedre metode, men dirname(__FILE__) blir jo noe helt annet da, siden den returnerer mappa til filen der hvor koden kjører, men vis du er ute etter å vite mappa til filen som har inkludert fila som koden ligger i så hjelper ikke dirname(__FILE__) noe.

Ble vist en lang setning det der... :p

Lenke til kommentar

Mulig jeg uttrykte meg litt uklart...

Når jeg definerer DIR_MAIN så peker ikke den til mappa til filen som definerer den men til "hovedmappa", altså den øverste mappa - der hvor index.php - Hovedsiden ligger.

For når jeg vet hvor den mappa er så er det enkelt å finne alle de andre mappene.

 

Eksempel:

/index.php - DIR_MAIN = ''

/undermappe/index.php - DIR_MAIN = '../'

 

Og i den fila som "knytter prosjektet sammen" putter jeg noe sånt som dette:

define('DIR_INCLUDES', DIR_MAIN . '../');

define('DIR_CLASSES', DIR_INCLUDES . 'classes/');

define('DIR_STYLESHEETS', DIR_MAIN . 'stylesheets/');

define('DIR_JAVASCRIPT', DIR_MAIN . 'jscript/');

 

Det jeg misliker med denne metoden er at jeg er nødt til å definere DIR_MAIN i toppen av alle PHP-filene som brukes. (ikke de som inkluderes da)

Så vis noen har en smart måte å løse dette på så...

Endret av PHPdude
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...