2012-10-08 68 views
0

我一直在游荡一会儿,试图摆脱这个问题。PHP包括和重定向

我有一个php软件,我想知道脚本在哪里执行。

例如

我有/foo/bar/home.php。在这种情况下,我想知道/ foo/bar是我的根。但是,如果我有一个示例管理页面/foo/bar/admin/index.php我想在这种情况下也有/ foo/bar。 或者

/foo/bar/foo/index.php - > /富/酒吧/富 /foo/bar/foo/randomname/home.php - > /富/酒吧/富

如何我可以做到吗?

感谢您的帮助

回答

1

因为/foo/bar对我来说听起来不像是一个文件系统路径,所以我认为这是URL路径的第一部分。

应用程序如何知道这个前缀应用于所有事情?它必须安装在某个地方,如果不应用重写,文件系统路径布局和url路径布局会在某个级别上匹配。这可能用于通过减去一些字符串来实际生成路径信息,但我怀疑它是否有用。

我会选择在随处可见的文件中定义常量“INSTALL_PATH”和/或“INSTALL_URL”,该文件知道其相对于基本url或文件路径的位置,并执行简单的字符串操作:

define('INSTALL_PATH', basename(__DIR__); // go one level up

+0

你指出的是我打算做的,我确实有一个想法,我只是想知道哪种“最直接”的方式。 Infact我为路径和网址使用了两个常量,以获得正确的包含和重定向。顺便说一句,它帮助我了解了我正确的道路。非常感谢。 – Kei

1

您可以访问$_SERVER超全局变量的属性。

echo $_SERVER['DOCUMENT_ROOT']; 

下,如果位于 “/foo/bar/foo/index.php”,将回声/foo/bar/foo/

+0

+1。澄清一下,如果你在“/foo/bar/foo/subdirectory/index.php”中,如果这是你的web服务器的文档根目录,它仍然会回显'/ foo/bar/foo /'。做一个'var_dump($ _ SERVER);'看看所有的可能性。 – deizel

+0

我不想要/或www根。 $ _SERVER ['DOCUMENT_ROOT']具有绝对根目录。我需要有我的应用程序的根。 – Kei