Dev*_*ner 4 php url absolute-path
我有一个配置文件.这不是一个独立的文件.我将使用require()将此文件包含在我要使用的页面的顶部.我想动态获取此配置文件的完整绝对URL路径,无论其位置如何,并将其作为常量存储在其自身内.例如:
物理位置:(根目录)/my_folder/configuration.php
需要URL为: www.mydomain.com/my_folder/configuration.php
物理位置:( root dir)/demos/my_folder/configuration.php
需要URL为: www.mydomain.com/demos/my_folder/configuration.php
物理位置:(根目录)/demos/site1/my_folder/configuration.php
需要URL为: www.mydomain.com/demos/site1/my_folder/configuration.php
物理位置:( root dir)/demos/site2/my_folder/configuration.php
需要URL为: 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而不是www. 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}";
Run Code Online (Sandbox Code Playgroud)
如果它适合您的用例,您可以使用它更具动态性$_SERVER[ 'HTTP_HOST' ];
我DOCUMENT_ROOT在开发中使用了自由,因为它通常是唯一可用于构造某些自引用路径的动态变量.有一个运行Apache错误票(#26052)的looong关于如何DOCUMENT_ROOT处理得不好,特别是Apache不允许你设置值,RewriteRule并且在使用mod_vhost_alias时没有将它设置为合理的值.讨论持续了7到8年,因为大概来自Apache项目的人们拒绝改变行为,直到他们最终出现并在今年2.4.1中做出改变.(我之前看过这个,但我现在忘记了确切的变化,以及它们的满足程度.)
如果您查看故障单上的评论,您会看到人们通过以下评论拒绝对行为进行更改:
不要相信DOCUMENT_ROOT变量.
DOCUMENT_ROOT不是,从来没有,也永远不会成为查找Web内容的文件系统路径的可靠方法.
所以我建议阅读那张票的评论,看看有人在说使用它的注意事项.我已经成功地使用了它,并且不知道在DOCUMENT_ROOT可用的相同情况下实现相同事物的更好方法并提供必要的数据.
| 归档时间: |
|
| 查看次数: |
7983 次 |
| 最近记录: |