PHP:查找项目根目录的绝对URL

时间:2013-07-07 08:25:30

标签: php apache

我有一个应该安装在不同服务器上的PHP项目。 它在项目根目录中有一个名为includes.php的包含文件,可以从整个项目的多个位置调用,比如文件file1.php(与includes.php在同一位置),{ {1}}和subdir/file2.php。包含文件包含一个函数,该函数应该返回整个项目的绝对URL,例如subdir2/file3.php,无论函数被调用哪个文件。

  • 我不能使用http://www.myserver.com/myproject/,因为它返回调用函数的文件的URL(变化)。我不想传递一个参数说“上两个目录”或类似的东西,因为有很多地方可以调用这个URL函数。
  • 我无法使用$_SERVER["REQUEST_URI"]__FILE__(某些人推荐),因为我们的服务器有一些奇怪的配置,因此$_SERVER['DOCUMENT_ROOT']不在__FILE__的子目录中。 (我正在为我的学校编写项目,但它应该分发给其他学校。)

我的最后一个解决方案是取$_SERVER['DOCUMENT_ROOT'],删除文件部分并使用$_SERVER["REQUEST_URI"]检查是否可以在此目录中找到已知文件(get_headers())。如果没有,我检查父目录,依此类推。遗憾的是,dummy.php在我们的学校服务器中没有返回任何内容(但它可以在我家的测试系统上运行)。

一个有效的解决方案(但我并不喜欢)是将项目根URL放在配置文件中。

有没有人对此有另一个想法?提前谢谢!

修改 好的,我找到了一个适合自己的解决方案。我仍然愿意评论如何做得更好,也许不使用get_headers()?有没有理由不使用这个功能?

debug_backtrace()

0 个答案:

没有答案