PHP动态获取将包含在其他文件中对特定文件的完整绝对URL路径(PHP Dynamically ge

2019-09-20 19:13发布

我有一个配置文件。 这不是一个独立的文件。 我会包括,我想在使用网页的顶部该文件,使用要求()。 我想动态获取此配置文件的完整绝对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

我怎样才能实现以上?

Answer 1:

如果你能依靠的价值$_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可用,并提供必要的数据。



Answer 2:

我使用,这完美地工作了我想要的东西,是这样的:

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