gpt4 book ai didi

php - 在包含中使用 $_SERVER ['DOCUMENT_ROOT' ] 是个好主意吗?

转载 作者:行者123 更新时间:2023-12-03 00:09:51 25 4
gpt4 key购买 nike

例如,这是一个好主意吗?

require_once($_SERVER['DOCUMENT_ROOT'].'/include.php');

如果您在同一台服务器上有两个虚拟主机,一个用于实时,一个用于开发,具有不同的 Apache DocumentRoots,这将避免在包含源未知时必须包含绝对路径,并且可能位于任何目录中.

(注意:以下部分中的文件路径是相对于 Web 根目录的。它们实际上类似于 /var/www/app/core/init.php,其中 /var/www/app 是网络根目录)

例如:我有一个/core/init.php,它是使用网​​站各处的相对路径(/file.php/dir/file.php 或/dir/dir/file.php)。

这个 init.php 然后包含几个函数页面,位于基金目录中,即 /core 的子目录(如 /core/func/userfunctions.php 中)。

因此,在 init.php 中,我可以使用 $_SERVER 方法,因为如果我使用相对路径并尝试从 /dir/file 等页面调用函数,它就会中断.php.

我看不出有什么问题,但一般来说会出现什么问题?

最佳答案

我见过 $_SERVER['DOCUMENT_ROOT'] 未设置或不是您所期望的情况(即未在 CLI 或旧 IIS 中设置,或在某些 CGI 设置中无效) .

因此,您可以使用 dirname(__FILE__) 来获取调用该行的脚本的路径。然后您可以从那里引用相对路径,例如

include dirname(__FILE__) . '/../../other/file.php';

当文件的目录结构已知并且不会更改时,我会使用上述方法。

如果DOCUMENT_ROOT不可用,以下是合适的替代品:

substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));

关于php - 在包含中使用 $_SERVER ['DOCUMENT_ROOT' ] 是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11893832/

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