返回相对于站点根目录的路径,而不是服务器根目录

为什么?

我需要检测给定的路径是否包含目录,app但仅在站点的根目录之后(即忽略完整的服务器路径,只搜索实际站点内的路径)。

考虑以下路径:

  • /root/var/www/app/app/Http 真的

  • /root/var/www/app/public 错误的

  • C:\Users\john\Sites\example_com\www\app\Http 真的

我尝试过的...

我已经使用以下代码解决了上述问题:

// Normalise the directory separators in the document

// root

$document_root = str_replace('/', DIRECTORY_SEPARATOR, $_SERVER['DOCUMENT_ROOT']);


// Remove the '/public' path from the end, this should 

// give us the path to the site root...

$site_root = str_replace(DIRECTORY_SEPARATOR . 'public', '', $document_root);


// Normalise the directory separators in the supplied

// path

$normalised_path = str_replace('/', DIRECTORY_SEPARATOR, $path['path']);


// Remove the site root from the beginning of the path

$stripped_path = str_replace($site_root, '', $normalised_path);


// Now we can run our tests...

我的问题

是我还是上面的代码对于这样一个简单的任务来说似乎很荒谬?任何人都可以提出更好或更清洁的方法来实现这一目标吗?本质上,我试图从给定的路径中剥离服务器根目录,以便为我提供一个相对于站点根目录的路径......

如果有一种方法可以使用 Laravel/Lumen 中的内置类/方法来实现这一点,那么也请随时提出这些建议。


catspeake
浏览 129回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP