Mads-b Skrevet 30. januar 2007 Del Skrevet 30. januar 2007 (endret) Hallois! Jeg driver og koder noe greier, et digert system med mange filer, som ligger i en mappe. Disse filene er mer eller mindre avhengige av hverandre vha. requires o.l. Problemet oppstår når jeg vil inkludere en av disse filene til bruk i en annen fil i en annen mappe. Da slutter includene å virke, fordi de da leter etter nabofilene sine i den nye mappen. Hvordan fikser jeg dette? php-fiolene må på egen hånd finne ut sin egen URL; ikke URL'en til stedet de er blitt inkludert, men stedet de faktisk eksisterer. Endret 30. januar 2007 av Mads-b Lenke til kommentar
Asterisk Skrevet 30. januar 2007 Del Skrevet 30. januar 2007 Sånn og forstå at filen som skal inneholde include til den filen ligger et hieraki nedover? Slik: eks_mappe/ny_mappe include fil ligger i eks_mappe, mens fil som skal includere ligger i ny_mappe ? Da kan du i den filen som skal includere gjøre det slik: require_once("../filnavn.php"); el. require_once("http://www.[...]/filnavn.php"); <-- Hele banen ../ --> går tilbake et steg i hierarkiet av mapper. Mener dette skal fungere. Lenke til kommentar
Mads-b Skrevet 30. januar 2007 Forfatter Del Skrevet 30. januar 2007 (endret) Saken er at systemet skal være dynamisk. Jeg vil ikke hard-kode inn URL's Jeg skal spesifisere problemet: her er bøllefil.php: <?php //bøllefil vil ha jevnlig kontakt med alle gangstervennene sine require(rotta.php); require(bølla.php); echo bank_opp_gammel_dame('olga'); //bøllefil kaller opp en funksjon fra vennene sine ?> bøllefil.php ligger i www/nettsted/slum/ rotta og bølla ligger også i slummen. Nå har det seg slik, at bøllefil.php har andre venner på andre steder: Her er filnavn og plassering: sniken.php www/nettsted/toppen/ slemming.php www/nettsted/ ekling.php www/nettsted/kolstad/ Disse tre gidder ikke å forandre seg, og vil være som alle andre. derfor ringer de bøllefil slik: <?php include(www/nettsted/slum/bøllefil.php); ?> Ulempen er at nå drar de bølla med i ukjent farvann, og nå finner ikke bølla veien hjem til kompisene som han krever (bølla og rotta). Bøllefil trenger litt kode så han kan finne kompisene sine uansett hvor han er. omfattende.. EDIT: om noen føler seg støtt, kan jeg godt sladde navn. Husk at alle navn er imaginære og har ingen rot i virkeligheten. Endret 30. januar 2007 av Mads-b Lenke til kommentar
Ernie Skrevet 30. januar 2007 Del Skrevet 30. januar 2007 (endret) Det enkleste er vel å definere path frem til rota i en konstant e.l i en config-fil og bruke den. Ellers skal man teoretisk sett kunne bruke __FILE__, men da må man mekke litt. Endret 30. januar 2007 av Ernie Lenke til kommentar
ZoRaC Skrevet 30. januar 2007 Del Skrevet 30. januar 2007 du kan sette full filbane øverst i bøllefil.php: $fullPath = "/www/nettsted/slum/"; include($fullPath."/rotta.php"); Da vil du kunne inkludere bøllefil.php fra en annen mappe, og den vil likevel finne igjen rotta Lenke til kommentar
Mads-b Skrevet 31. januar 2007 Forfatter Del Skrevet 31. januar 2007 Det hørtes ut som en god ide, men for at det skal fungere må jeg skrive: $system_url = 'http://localhost/moss/system/'; senere, må jeg hente ut en fil, og jeg trodde følgende skulle funke: require_once($system_url . 'functions.php'); Filen ligger på rett sted, den inneholder noen funksjoner og greier, men jeg får ikke kontakt med dem, ingen feilmelding eller noe! Klarer ikke PHP å lese fra filer påkalt med full URL? Lenke til kommentar
xqus Skrevet 31. januar 2007 Del Skrevet 31. januar 2007 Det hørtes ut som en god ide, men for at det skal fungere må jeg skrive:$system_url = 'http://localhost/moss/system/'; senere, må jeg hente ut en fil, og jeg trodde følgende skulle funke: require_once($system_url . 'functions.php'); Filen ligger på rett sted, den inneholder noen funksjoner og greier, men jeg får ikke kontakt med dem, ingen feilmelding eller noe! Klarer ikke PHP å lese fra filer påkalt med full URL? 7840093[/snapback] Når du henter en fil vha. http vil jo den først kjøres, altså er det bare output fra scriptet som hentes inn. Uansett, kanskje http://no2.php.net/manual/en/function.set-include-path.php kan hjelpe deg. Lenke til kommentar
Mads-b Skrevet 31. januar 2007 Forfatter Del Skrevet 31. januar 2007 (endret) Men hva skal jeg sette path som om jeg må trykke http://localhost/moss/includes/ for å komme til include mappa? Er det i forhold til filen det skrives inn i det er snakk om? Hva kan jeg forøvrig skrive i include om ikke http? EDIT: hey, svindel! hva er pointet med den funksjonsrekka der? det eneste den gjør er å huske en URL som jeg skriver inn! Det kan jo en enkel string også gjøre.. edit2: Fant etter litt om og men ut at jeg kunne skrive dirname(__FILE__) og legge til url'en jeg trengte. Absolutte URL's Endret 31. januar 2007 av Mads-b Lenke til kommentar
MC2 Skrevet 31. januar 2007 Del Skrevet 31. januar 2007 mulig jeg ikke helt forstår hva du vil her men istedet for require("bølla.php"); heller require(dirname(__FILE__)."/bølla.php"); altså noe som Ernie sa. Da er all inkluderinga gjennom absolute paths istedet for relative. Lenke til kommentar
Mads-b Skrevet 31. januar 2007 Forfatter Del Skrevet 31. januar 2007 Og du var... 5 sek for sent ute MC2! men det er riktig svar. Jeg går for den løsningen. Case closed. Vent litt... hvis MC2 ga meg svaret 5 sek etter at jeg hadde snudd nettet på hodet etter løsningen, hva var da vitsen med å lete det opp selv?`*frustrert* Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå