我有一个配置文件。 这不是一个独立的文件。 我会包括,我想在使用网页的顶部该文件,使用要求()。 我想动态获取此配置文件的完整绝对URL路径 ,不管它的位置,并将其存储作为自身内部常数。 例如:
物理位置(根目录)/my_folder/configuration.php
需要网址为:www.mydomain.com/my_folder/configuration.php
物理位置(根目录)/demos/my_folder/configuration.php
需要网址为:www.mydomain.com/demos/my_folder/configuration.php
物理位置(根目录)/demos/site1/my_folder/configuration.php
需要网址为:www.mydomain.com/demos/site1/my_folder/configuration.php
物理位置(根目录)/demos/site2/my_folder/configuration.php
需要网址为:www.mydomain.com/demos/site2/my_folder/configuration.php
简单这么远吗? 这里是真正需要的是什么,并使其复杂化(IMO)。 试想一下:
配置文件位于:www.mydomain.com/demos/site2/my_folder/configuration.php
嵌套文件夹:www.mydomain.com/demos/site2/1/2/3/index.php
当我按照上面的URL访问,在“3”的子文件夹中的index.php文件, 我需要的路径,配置文件作为www.mydomain.com/demos/site2/my_folder/configuration.php而不是万维网。 mydomain.com/demos/site2/1/2/3/my_folder/configuration.php
我怎样才能实现以上?
如果你能依靠的价值$_SERVER[ 'DOCUMENT_ROOT' ]
那里面configuration.php
:
$path = substr( __FILE__, strlen( $_SERVER[ 'DOCUMENT_ROOT' ] ) );
$url = "www.mydomain.com{$path}";
如果它适合你的使用情况,你可以把它用更动态的$_SERVER[ 'HTTP_HOST' ]
;
DOCUMENT_ROOT
我用DOCUMENT_ROOT
宽松在我的发展,因为它通常可用于构建一定的自我指涉的路径只有动态变量。 有一个looong运行的Apache漏洞票( #26052 )如何DOCUMENT_ROOT
的处理不当,尤其是阿帕奇不会让你的值设置为RewriteRule
,并使用mod_vhost_alias时并没有将其设置为一个合理的值。 讨论的推移一段7-8年从Apache项目的人可能拒绝改变的行为,直到他们终于来到身边,并在今年2.4.1所做的更改。 (我看着这以前,但我现在忘了什么确切的变化是,如何满足他们。)
如果你看看你会看到人们抵制变化与这样的评论的行为门票的评论:
不要相信DOCUMENT_ROOT的变量。
DOCUMENT_ROOT没有,从来没有,也绝不会找到文件系统路径网络内容的可靠方式。
因此,我建议您阅读上票的意见,看看人们在说什么使用它的的注意事项。 我已经有很多成功的使用它,不知道有更好的方法来达到同样的情况相同的事情, DOCUMENT_ROOT
可用,并提供必要的数据。
我使用,这完美地工作了我想要的东西,是这样的:
define('URL', dirname(substr($_SERVER['SCRIPT_FILENAME'], strlen( $_SERVER[ 'DOCUMENT_ROOT' ] ) )).'/');
文章来源: PHP Dynamically get complete Absolute URL Path for specific file that will be included in other files