Gå til innhold

PHP må finne ut hvor den kjøres


Anbefalte innlegg

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 av Mads-b
Lenke til kommentar
Videoannonse
Annonse

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

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.. :p

 

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 av Mads-b
Lenke til kommentar

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
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

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 :w00t:

Endret av Mads-b
Lenke til kommentar

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

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å
×
×
  • Opprett ny...