Allora provo a spiegarti.
Faccio riferimento al sito dell'utente MIOSITO, in cui lo script gira dentro a
/TEST/UNO/mioscript.php
Codice PHP:
$current_script = dirname($_SERVER['SCRIPT_NAME']);
la cartella contenente lo script (riferito alla root)
--> /TEST/UNO
Codice PHP:
$current_path = dirname($_SERVER['SCRIPT_FILENAME']);
la cartella contenente lo script (percorso assoluto)
-->/membri/MIOSITO/TEST/UNO
Codice PHP:
$adjust = explode("/", $current_script);
esplodo la stringa usando il separatore / ...
Codice PHP:
$adjust = count($adjust)-1;
e conto quante cartelle ci sono rispetto alla root
--> 2 (TEST - UNO)
Codice PHP:
$traverse = str_repeat("../", $adjust);
Creo una stringa contenente "../" per ogni cartella...
-->("../../")
Codice PHP:
$adjusted_path = sprintf("%s/%s", $current_path, $traverse);
e li appendo (come stringhe) alla fine di current path
--> /membri/MIOSITO/TEST/UNO/../../
Codice PHP:
return realpath($adjusted_path);
infine ritorno il path reale (.. equivale a "sali di un livello").
--> /membri/MIOSITO
Una alternativa più breve è
Codice PHP:
function resolveDocumentRoot() {
$current_script = dirname($_SERVER['SCRIPT_NAME']);
$current_path = dirname($_SERVER['SCRIPT_FILENAME']);
return str_replace($current_script, '', $current_path);
}
da current_path elimino current_script. Semplice no?