[ NikolaVeber @ 16.02.2004. 14:05 ] @
Pozdrav!

Da li je moguce prilikom ukljucivanja jednog fajla na, npr index stranu, ukljucivanja u tom fajlu ostanu funkcionalna.
Konkretan slucaj:
Na index.php strani hocu da u prostor za sadrzaj ukljucim fajl ./forum/index.php. Tom prilikom se javlja greska u ./forum/index.php, jer mu je verovatno promenjen direktorijum, tj ponasa se kao da je u root-u.

Da li moram da u ./forum/index.php menjam sve include f-je u apsolutne adrese, ili ima neko bolje resenje?
[ _owl_ @ 16.02.2004. 15:36 ] @
Pa normalno da moze (samo treba znati kako). Mozda bi mogao da se upoznas sa __DIR__ i __FILE__ konstantama (sigurno je negde u manualu opisano koje su im vrednosti, ne daj boze da pre toga odradis jedan echo __DIR__ . __FILE__ iz inkludovanog fajla).
[ broker @ 16.02.2004. 16:48 ] @
Nikola, najbolje ti je da u php palikaciji uspostvis globalno promenljivu koja ce da pokazuje na root sajta i da je uvek korsitis u referenciranju putanja. Tako ces imati tacne putanje kad god ti zatrebaju.

Naalost, to jest problem sto includeovanje uvek tretira tekuci direktorijum a ne direktorijum u kome se nalazi skripta u kojoj se vrsi inclde tako da sve relativne veze lako popucaju.

[ NikolaVeber @ 16.02.2004. 17:19 ] @
Mislio sam da je moguce nesto "partizanski" odraditi. Stvar je u tome sto kod (forum) nisam sam pisao, nego je preuzet sa neta.
Razmisljam da ga ubacim u iFrame koji cu smestiti tamo gde mi treba (na index.php).

Hvala u svakom slucaju!

btw
__DIR__ konstantu nisam uspeo da nadjem u manualu. A i google je izbacio par tredova sa kojekakvih foruma, ali nesta odredjeno.
[ _owl_ @ 16.02.2004. 20:37 ] @
Citat:

Nikola, najbolje ti je da u php palikaciji uspostvis globalno promenljivu koja ce da pokazuje na root sajta i da je uvek korsitis u referenciranju putanja.


Pa najbolje samo za komponente koje koristi aplikacija ali ako postoje delovi koda koji su medjusobno zavisni (naprimer klase koje koristis u vecem broju aplikacija)
to bas i nije najbolje resenje.

Citat:

Mislio sam da je moguce nesto "partizanski" odraditi.

Zasto "partizanski" ako mozes da to odradis elegantno.

Citat:

__DIR__ konstantu nisam uspeo da nadjem u manualu. A i google je izbacio par tredova sa kojekakvih foruma, ali nesta odredjeno.

Izgleda da konstanta __DIR__ ne postoji (tek sad sam proverio) ali __FILE__ ti pruza sve potrebne informacije.


[ bluesman @ 16.02.2004. 23:01 ] @
Mislim da je najjednostavnije resenje (ja koristim upravo to) da definises kionstantu na pocetku skaog scripta:

define ('PATH_ROOT', './');

pa onda kada include-ujes, pises

require_once (PATH_ROOT.'config.php');
require_once (PATH_ROOT.'classes/class.gpb.php');

ako se nalazi u podfolderu, recimo "test", pises

define ('PATH_ROOT', '../');

a ostatak koda je isti
require_once (PATH_ROOT.'config.php');
require_once (PATH_ROOT.'classes/class.gpb.php');

i onda nikada nema zajeba, jedino sto moras da se setis je da ako promenis lokacija scripta, promenis i PATH_ROOT, pa tako ako je u podfolderu "/test/a/b/":

define ('PATH_ROOT', '../../../');

i uvek radi.

Sto se __FILE__ tice, morao bi onda da ga parseujes

dirname(__FILE__)."/"

i ispostavilo se da to ume nekada da izazove cudne efekte, narocito ako imas nekoliko ugnjezdenih include, ili ako se razlikuje directory separator (\ ili /) (obicno nema problema ali moze da se desi), a pogotovo ako se (u jednom slucaju mi se to desilo) razlikuje $_SERVER['DOCUMENT_ROOT'] od pravog DOCUMENT_ROOT. Tu sam proveo 2 dana da provalim gde je greska u kodu dok nisam na kraju u ocajanju pogledao phpinfo().

Ovo sa konstantom je brze, a moze cak i pocetnik da razume.
[ NikolaVeber @ 17.02.2004. 18:50 ] @
Ok, to su metode kako da izbegnes zajebe u kodu koji pises. Mene muci sto vec imam napisan kod.
Da li je moguce da "utripujem" fajl da se nalazi u drugom direktorijumu, tj da izmenim njegov root (prividno) promenom vrednosti neke promenljive?
[ bluesman @ 18.02.2004. 01:16 ] @
Ako sam te razumeo dobro onda nemam predstavu kako si to zamislio da "zajebes" script da misli da je include u drugom foleru u kojem nije :-)

Jedino resenje je extended search-replace (recimo to je jedan od razloga zasto sve radim u Home Site) pa menjas svaki include... mozda mozes da upotrebis $_SERVER['DOCUMENT_ROOT']... ne vidim ni jedno resenje gde mozes da "isfoliras" drugu lokaciju...
[ -zombie- @ 18.02.2004. 12:34 ] @
pre includovanja skripte chdir() u njen dir, a posle se samo vrati u prethodni (zapamćeni) dir..

[ NikolaVeber @ 18.02.2004. 15:58 ] @
Ok, hvala. chdir je resio problem sa includovanjem, ali mi je ostao problem sa relativnim linkovima...

Batalicu ovaj pristup i uzmenicu forum da izgleda kao ostatak sajta, pa se nece primetiti gde se skace.

Hvala u svakom slucaju.
[ Goran Rakić @ 28.02.2004. 21:51 ] @

Mozes i da podesis sa ini_set putanju za include tako da obuhvati i forum.
A za relativne linkove, pa valjda forum ima opciju da podesis link do
root-a foruma?