Resumo
Este exemplo assume que você sempre sabe onde está a pasta raiz do apache '/ var / www /' e está tentando encontrar o próximo caminho de pasta (por exemplo, '/ var / www / my_website_folder'). Também funciona a partir de um script ou do navegador da web, por isso existe um 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;
}
Exemplo
echo getHtmlRootFolder();
Resultado:
/var/www/somedir/
Detalhes:
Basicamente, primeiro tenta obter DOCUMENT_ROOT se ele contém '/ var / www /' e então usa-o, senão obtém o diretório atual (que existe dentro do projeto) e obtém o próximo valor do caminho baseado na contagem do caminho $ root. Nota: instruções rtrim adicionadas para garantir que o caminho retorne terminando com '/' em todos os casos. Ele não verifica se precisa ser maior que / var / www /, mas também pode retornar / var / www / como uma resposta possível.