PHP动态获取将包含在其他文件中的特定文件的完整绝对URL路径
我有一个配置文件.这不是一个独立的文件.我将使用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}"; 如果它适合您的用例,您可以使用$_SERVER [‘HTTP_HOST’]使其更具动态性; DOCUMENT_ROOT 我在开发中使用了DOCUMENT_ROOT,因为它通常是唯一可用于构造某些自引用路径的动态变量.有一个关于如何处理DOCUMENT_ROOT的Apache错误票证(#26052),特别是Apache不允许你用RewriteRule设置值,并且在使用mod_vhost_alias时没有将它设置为合理的值.讨论持续了7到8年,因为大概来自Apache项目的人们拒绝改变行为,直到他们最终出现并在今年2.4.1中做出改变. (我之前看过这个,但我现在忘记了确切的变化,以及它们的满足程度.) 如果您查看故障单上的评论,您会看到人们通过以下评论拒绝对行为进行更改:
所以我建议阅读那张票的评论,看看有人在说使用它的注意事项.我已经使用它取得了很大成功,并且不知道在DOCUMENT_ROOT可用的相同情况下实现相同功能的更好方法并提供必要的数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |