我有一个应该安装在不同服务器上的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()