Molto spesso capita di dover scegliere tra percorsi dinamici e percorsi assoluti ... sia per includere file, sia per caricarli, sia per richiamare link interni del sito via html e cosi via ... e molto spesso si ci ritrova a dover adottare strane soluzione per risolvere il problema
quella che vi propongo qua è, credo, una buona soluzione, che risolve tutti questi problemi
))
Qual'è il problema?
Partiamo dal presupposto che è FONDAMENTALE usare percorsi dinamici ... perché non è possibile modificare ogni volta il percorso in tutte le variabili di tutto il sito, quindi dovrebbe essere buona abitudine avere una variabile o una costante dove inserire il percorso del sito in modo usarla come punto di riferimento ... quindi in realtà i percorso sono dinamici ... ma dinamici rispetto a questa variabile, perché realmente sono fissi
quando però si fa una cosa del genere è necessario pre impostare il percorso, e ciò può essere MOLTO seccante ... sul vostro pc c'è un percorso, in remoto c'è un altro percorso, poi magari dovete mettere tutti i file in un altra dir per fare la demo, e si deve cambiare ancora il percorso ... cosa che quindi rende più complessa l'installazione per l'utente finale o per chi non si sa muovere
Requisiti
E' possibile ricorstruire dinamicamente il percorso del sito in maniera molto semplice ... e per far questo è richiesto un solo requisito ... avere un file che viene SEMPRE incluso in tutte le pagine ... e questo può benissimo essere quello della configurazione ... dove magari dichiarate i settaggi di mysql, o instanziate delle classi, o includete dei file e cosi via
Come risolvere il problema?
Siccome php è fantastico ... ha delle costanti altrettanto fantastiche 
esiste la costante __FILE__ che varia da file a file ... ovvero non è una reale costante.
ok ho detto tutto e nulla! Mi spiego meglio
Mettiamo che abbiamo 2 file, uno che si chiama daniele.php e l'altro si chiama dll.php.
Se all'interno di questi due file facciamo stampare, tramite un echo, la costante __FILE__ otterremo, in tutti e due i casi, i due percorsi completi del file!
Cosa ci permette di far questo? semplice ... se il file di configurazione sta nella cartella principale del sito ... beh ... per sapere dov'è il sito basta estrarre la cartella nel quale risiede il file 
ecco come ...
codice:
define('SITE_PATH', dirname(__FILE__));
se dovessimo includere un file che sta dentro la cartella include possiamo fare
codice:
include('include/file.inc.php');
o
codice:
include(SITE_PATH . 'include/file.inc.php');
ottenendo quindi lo stesso risultato, ma con una differenza sostanziale: mentre in certe situazioni le path dinamiche non sono utilizzabili quelle fisse lo sono sempre!
Inoltre questo ci permette di ottenere il percorso web ... come? basta sostituire all'intero percorso presente in config la document root con l'host http!
codice:
define('SITE_URL', str_replace(
$_SERVER['DOCUMENT_ROOT'],
(
substr(
$_SERVER['DOCUMENT_ROOT'],
-1,
1
) == '/' ?
$_SERVER['HTTP_HOST'] . '/' :
$_SERVER['HTTP_HOST']
),
SITE_PATH
));
in questo modo basta inserire una variabile che il template engine del sito si occuperà di sostutire con l'url del sito, ovvero con SITE_URL
ovviamente poi dall'utilizzo della costante __FILE__ si possono ricavare tante altre utilissime cose ... però questo è un altro discorso
per completezza ... anche se non c'entra nulla ... esiste anche la costante __LINE__ che indica la linea corrente
di seguito sono presenti 3 link che portano alle pagine dove vengono elencate le costanti "magiche", le costanti dell'engine zend e le costanti di php
http://it2.php.net/manual/en/languag...predefined.php
http://it2.php.net/manual/en/reserve...s.standard.php
http://it2.php.net/manual/en/reserve...tants.core.php
PS: ho scritto tutto senza rileggerlo ... se vedete ORRORI avvertite che correggo