gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:13:45 25 4
gpt4 key购买 nike

我有一个配置文件。这不是一个独立的文件。我将使用 require() 将此文件包含在我要使用的页面的顶部。我想动态获取此配置文件的完整绝对 url 路径,而不管它的位置并将其作为常量存储在自身中。例如:

物理位置:(根目录)/my_folder/configuration.php

需要 URL 为: www.mydomain.com/my_folder/configuration.php

物理位置:(根目录)/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

物理位置:(根目录)/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 不允许您使用 RewriteRule 设置值并且没有'使用 mod_vhost_alias 时不要将其设置为合理的值。讨论持续了 7-8 年,因为据推测来自 Apache 项目的人们拒绝改变行为,直到他们终于在今年 2.4.1 中做出改变。 (我之前调查过这个,但我现在忘记了确切的变化是什么,以及它们有多令人满意。)

如果您查看工单上的评论,您会看到人们通过以下评论抵制改变行为:

Don't trust the DOCUMENT_ROOT variable.

DOCUMENT_ROOT is not, never was, and never will be a reliable way of finding the filesystem path to web content.

所以我建议阅读该票证上的评论,看看人们在说什么使用它的注意事项。我已经使用它取得了很大的成功,并且不知道有什么更好的方法可以在 DOCUMENT_ROOT 可用并提供必要数据的相同情况下实现相同的目的。

关于PHP动态获取将包含在其他文件中的特定文件的完整绝对URL路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com