Підсумок
Цей приклад передбачає, що ви завжди знаєте, де знаходиться коренева папка 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 /', а потім використовувати його, а потім отримати поточний dir (який багато існує у проекті) і отримує значення наступного шляху на основі підрахунку $ root шляху. Примітка: додано rtrim-оператори, щоб забезпечити повернення шляху, що закінчується на '/' у всіх випадках. Він не перевіряє, чи вимагає він бути більшим, ніж / var / www /, а також може повернути / var / www / як можливу відповідь.