Resumen
Este ejemplo asume que siempre sabe dónde está la carpeta raíz de Apache '/ var / www /' y está tratando de encontrar la siguiente ruta de carpeta (por ejemplo, '/ var / www / my_website_folder'). También esto funciona desde un script o el navegador web, por lo que hay un código adicional.
Código PHP7
function getHtmlRootFolder(string $root = '/var/www/') {
// -- try to use DOCUMENT_ROOT first --
$ret = str_replace(' ', '', $_SERVER['DOCUMENT_ROOT']);
$ret = rtrim($ret, '/') . '/';
// -- if doesn't contain root path, find using this file's loc. path --
if (!preg_match("#".$root."#", $ret)) {
$root = rtrim($root, '/') . '/';
$root_arr = explode("/", $root);
$pwd_arr = explode("/", getcwd());
$ret = $root . $pwd_arr[count($root_arr) - 1];
}
return (preg_match("#".$root."#", $ret)) ? rtrim($ret, '/') . '/' : null;
}
Ejemplo
echo getHtmlRootFolder();
Salida:
/var/www/somedir/
Detalles:
Básicamente, primero intenta obtener DOCUMENT_ROOT si contiene '/ var / www /' y luego úselo, de lo contrario, obtenga el directorio actual (que existe dentro del proyecto) y obtiene el siguiente valor de ruta basado en el recuento de la ruta $ root. Nota: se agregaron declaraciones rtrim para garantizar que la ruta regrese terminando con '/' en todos los casos. No comprueba si requiere ser más grande que / var / www / también puede devolver / var / www / como posible respuesta.