Резюме
В этом примере предполагается, что вы всегда знаете, где находится корневая папка apache «/ var / www /», и пытаетесь найти путь к следующей папке (например, «/ var / www / my_website_folder»). Также это работает из сценария или веб-браузера, поэтому есть дополнительный код.
Код 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;
}
пример
echo getHtmlRootFolder();
Вывод:
/var/www/somedir/
Подробности:
В основном сначала пытается получить DOCUMENT_ROOT, если он содержит '/ var / www /', затем используйте его, иначе получите текущий каталог (который много существует внутри проекта) и получает следующее значение пути на основе количества корневого пути $. Примечание: добавлены операторы rtrim, чтобы гарантировать, что возвращаемый путь заканчивается на '/' во всех случаях. Он не проверяет, должен ли он быть больше, чем / var / www /, он также может возвращать / var / www / в качестве возможного ответа.