özet
Bu örnek, apache kök klasörünün '/ var / www /' nerede olduğunu her zaman bildiğinizi ve sonraki klasör yolunu bulmaya çalıştığınızı varsayar (örn. '/ Var / www / my_website_folder'). Ayrıca bu, bir komut dosyası veya web tarayıcısından çalışır, bu nedenle ek kod vardır.
Kod 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;
}
Misal
echo getHtmlRootFolder();
Çıktı:
/var/www/somedir/
Detaylar:
Temel olarak ilk önce DOCUMENT_ROOT '/ var / www /' içeriyorsa, sonra onu kullanmaya çalışır, aksi takdirde mevcut dizini (projenin içinde çoğu var olan) alır ve $ kök yolunun sayısına bağlı olarak bir sonraki yol değerini alır. Not: her durumda '/' ile biten yolun döndürülmesini sağlamak için rtrim ifadeleri eklendi. / Var / www / 'dan daha büyük olması gerekip gerekmediğini kontrol etmez, ayrıca olası bir yanıt olarak / var / www / döndürebilir.