Newsgroup: it.comp.www.php
Titolo: file incluso e sua path reale

Giusto per non far morire la cosa, mi ripeto un po', anche perche' penso 
che sia una cosa che se alla quale non c'e' soluzione, la vedo una 
mancanza non da poco.
La questione e' la seguente:
Da un file A.php includo un file B.php , da dentro a B.php (che si trova 
in un'altra directory rispetto ad A.php) faccio una echo di una stringa 
HTML per dire al browser richiedente di usare un file javascrit.
Ora questa echo, pero' darebbe un risultato sfalsato, poiche' dal punto 
di vista di B.php tale file si trova in un path relativo diverso 
rispetto a quello che sarebbe con A.php, e quindi farebbe si che il 
browser che sta aprendo A.php non riesca a trovare il file javascript in 
questione.
La risoluzione piu' adeguata sarebbe quella di poter ottenere da dentro 
a B.php il suo reale path *anche in caso di inclusione*, poiche' 
qualsiasi costante di PHP che ritorna il path dello script ritorna il 
path di A.php che e' il file che richiede l'inclusione di B.php, 
generando cosi' path sballate internamente a B.php.
Possibile che non ci sia soluzione ?
Possibile che i progettisti di PHP non ci abbiano pensato ?
Veramente rognosa come situazione :(
Grazie e tutti
Ciao

Mi sa che è meglio che studi bene come funzionano le directory e i path 
(relativi e assoluti).
-- 
Cordialmente.
Melus.
dal mio e-mail togli i simboli di Zorro.

 
Beh, forse non hai molto ben capito il senso del mio messaggio !
Poiche' un file ha sempre un percorso assoluto su di un sistema, e le 
costanti di PHP rilasciano per l'appunto il path assoluto del file 
richiesto.
Sarebbe anche utile poter avere una path che esolua dal file richiesto, 
ma che sia incentrato sul file .php stesso, cosi' che un file incluso 
possa avere il path assoluto di se stesso e non del file che lo include.
Spero di essermi spiegato meglio.
Saluti
PS:
In ogni modo ho ben chiaro il funzionamento delle directory e dei vari 
percorsi.

 generando cosi' path sballate internamente a B.php.
Se in A.php includi B.php, significa che il path di B.php ti è noto; su
questo non credo ci siano dubbi.
Detto questo, io farei una cosa del genere (siamo in B.php):
$pathJS="cartellaJS/file.js"; // path relativo a B.php
echo $pathJS . "<br />";
e in A.php:
$pathB="../";
include($pathB . "B.php");
$pathJS_inPaginaA=$pathB . $pathJS;
echo $pathJS_inPaginaA;
Come la vedi?
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 
Penso di non essermi spiegato bene, possibili soluzioni per aggirare la 
cosa mi sono note, ma proprio non mi piacciono, perche' non fanno uso di 
una buona strutturizzazione del codice.
Stavo cercando una soluzione elegante, ben strutturata e generica (cioe' 
auto-adattabile alla situazione), che mi permetta di non modificare il 
codice o di attuare strani "acrocchi".
Per esempio, la soluzione da te suggerita non sarebbe molto applicabile 
caso in cui se in B.php ci fosse una classe e dentro ad essa vi fosse 
l'istruzione di "echo" precedentemente esaminata.
Scusate la pignoleria, ma come dicevo, sto cercando di risolvere la cosa 
senza strani accrocchi (seppur funzionanti).
Grazie
Ciao

 generando cosi' path sballate internamente a B.php.
Mi pare che tu non abbia nemmeno cercato dove ti avevo detto io. Ti do`
un'altro indizio.
http://it2.php.net/manual/en/language.constants.predefined.php
Bye.
-- 
Alessandro Pellizzari

Alessandro Pellizzari ha scritto:

A dire il vero mi avevi passato un altro link e una volta visotato 
quello non mi ero immaginato di andare a cercare le Magic Constants :)
Ma quest'ultimo risolve alla grande la questione ! :)
GRAZIE
Ciao

 Ma quest'ultimo risolve alla grande la questione ! :)
Rettifica:
A dire il vero non risolve completamente la questione , poiche' non 
ritorna il path del percorso associato all'URL del sito, ma il path 
associato al fileSystem.
Certo, acrocchiando un po' si puo' giungere ad una soluzione, pero' 
forse non del tutto flessibile a tutte le situazioni.
Grazie comunque e scusate la mia pignoleria
Ciao