Ringkasan
Contoh ini mengasumsikan Anda selalu tahu di mana folder root apache adalah '/ var / www /' dan Anda mencoba mencari jalur folder berikutnya (misalnya '/ var / www / my_website_folder'). Ini juga berfungsi dari skrip atau browser web, itulah sebabnya ada kode tambahan.
Kode 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;
}
Contoh
echo getHtmlRootFolder();
Keluaran:
/var/www/somedir/
Rincian:
Pada dasarnya pertama-tama mencoba untuk mendapatkan DOCUMENT_ROOT jika itu berisi '/ var / www /' kemudian gunakan, jika tidak, dapatkan dir saat ini (yang banyak ada di dalam proyek) dan dapatkan nilai jalur berikutnya berdasarkan jumlah jalur $ root. Catatan: menambahkan pernyataan rtrim untuk memastikan jalur kembali diakhiri dengan '/' dalam semua kasus. Itu tidak memeriksa apakah itu membutuhkan lebih besar dari / var / www / itu juga dapat mengembalikan / var / www / sebagai respons yang memungkinkan.