Zusammenfassung
In diesem Beispiel wird davon ausgegangen, dass Sie immer wissen, wo sich der Apache-Stammordner '/ var / www /' befindet, und dass Sie versuchen, den nächsten Ordnerpfad zu finden (z. B. '/ var / www / my_website_folder'). Dies funktioniert auch über ein Skript oder den Webbrowser, weshalb zusätzlicher Code vorhanden ist.
Code 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;
}
Beispiel
echo getHtmlRootFolder();
Ausgabe:
/var/www/somedir/
Einzelheiten:
Grundsätzlich wird zuerst versucht, DOCUMENT_ROOT abzurufen, wenn es '/ var / www /' enthält, und es dann verwendet. Andernfalls wird das aktuelle Verzeichnis (das im Projekt häufig vorhanden ist) abgerufen und der nächste Pfadwert basierend auf der Anzahl des $ root-Pfads abgerufen. Hinweis: Es wurden rtrim-Anweisungen hinzugefügt, um sicherzustellen, dass der Pfad in allen Fällen mit einem '/' endet. Es wird nicht geprüft, ob es größer als / var / www / sein muss. Es kann auch / var / www / als mögliche Antwort zurückgeben.