"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:ekk261d6nr1jhqb17c1jidiktj2g7p7jb8@4ax.com...
> On Sat, 16 Apr 2005 18:53:50 +0200, "Allan E" <allan_ege@hotmail.com>
> wrote:
>
> Hej Allan,
>
> >Så vidt jeg har kunne teste mig frem til returnerer Server.MapPath(), den
> >absolutte sti udfra den aspfil der er blevet kaldt.
> >Men hvordan kan jeg finde den absolutte sti udfra en includefils
placering.
>
> Det korte svar er, at det kan du ikke. En include regnes som en del af
> "hoved-filen" og koden i include'n afvikles, som om det hele var én
> fil.
>
> >Ex.
> >test.asp includerer "includes\paths.asp"
> >I paths.asp bliver variablen mindb = Server.MapPath("database.mdb")
> >
> >Når jeg kalder test.asp er "minsti" sat til
c:\inetpub\wwwroot\database.mdb
> >Men hensigten er at minsti skal være
> >c:\inetpub\wwwroot\includes\database.mdb, da stien skal være relativ til
> >includefilen "paths.asp".
>
> Når du altså ikke kan sætte stien relativt til include'n, må du sætte
> den relativt enten
> a) til roden - eller
> b) til "hoved-filen" - eller
> c) sørge for at hovedfilen altid har samme relative forhold til db'en.
>
>
> a) Hvis det er til roden, bliver det fx:
> Server.MapPath("/<sti>/database.mdb")
> Ulempen kan være, hvis du tester lokalt på et andet niveau i f.t.
> roden end dens endelige placering på serveren ...
>
> b) Hvis det er til hovedfilen, kunne det klares ved at definere en
> variabel, fx kaldet strPathAdjust, som default sættes = ""
>
> I include'n definerer du så:
> mindbwwwpath = strPathAdjust & "includes/database.mdb"
> mindb = Server.MapPath(mindbwwwpath)
>
> I hver "hovedfil" sætter du så strPathAdjust, afhængigt af hvor langt
> oppe i fil-hierarkiet hovedfilen befinder sig. Er den fx ét niveau
> oppe, skal den være:
> strPathAdjust = "../"
> Husk den skal defineres *inden* include-sætningen.
>
> Det kan virke lidt kringlet, men hvis du holder tungen lige i munden,
> når du kigger på dit fil-system, så er det ret enkelt
> NB: Vær lige opmærksom på, om din server accepterer "parent paths" -
> der er vist noget med, at de nyeste versioner pr. default ikke gør...
>
> c) En tredje løsning er at sørge for, at hovefilen altid har samme
> relative forhold til db'en.
> Det kan enten være fordi det er et relativt lille site, hvor alle
> asp-filer (der har brug for include'n) er på samme niveau (fx ét
> niveau væk fra roden), eller fordi man laver en include-fil til hvert
> niveau. Til små sites er det næsten den enkleste løsning.
>
> Håber ét af forslagene kan bringe dig videre
>
> >I php ville jeg have gjort noget a la: realpath(dirname(__FILE__) .
> >"/database.mdb")
> >Findes der noget ligende i asp?
>
> Jeg kender desværre alt for lidt til PHP!
>
Rigtigt godt svar, ned i dybden og med udvidelses muligheder.
Med venlig hilsen
Johnny Winther Ronnenberg