Mi dispiace ma quel sistema delle variabili di server non mi sembra granché bello, sia nello script che come HTML generato, con percorsi assoluti... (Altrimenti non chiederei un parere).

Circa le controindicazioni, su php.net ho letto:
$_SERVER['DOCUMENT_ROOT'] *is* supported by IIS, although only when running PHP as an ISAPI module.
Qualcun altro ha scritto:
Be careful when using $_SERVER['DOCUMENT_ROOT']; in your applications where you want to distribute them to other people with different server types. It isnt always supported by the webserver (IIS).
Siccome cerco un buon livello di portabilità a prescindere dalla piattaforma su cui vengono installate le mie applicazioni, mi sembra buono cercare soluzioni più sicure.
Ho scritto queste due funzioni che su Linux - Apache/2.0 vanno alla grande.
Ho testato anche su Microsoft-IIS/6.0 e funziona:

Codice PHP:
function relPath() {
    
// returns the relative folder-path of the current file
    
$filePath explode("/"$_SERVER['PHP_SELF']);
    
array_pop($filePath);
    return 
implode("/"$filePath);
}

function 
relRoot() {
    
// returns the relative folder-path of the root
    
$relRoot "";
    
$filePath explode("/"$_SERVER['PHP_SELF']);
    for (
$i 0$i count($filePath) - 2$i++) {
        
$relRoot .= "../";
    }
    return 
$relRoot;

Un unico dubbio: quando (su piattaforme Win) il delimitatore di cartelle nei path è un backslash "\" anziché uno slash"/" ?