当前位置: 首页 > 面试题库 >

在include中使用$ _SERVER ['DOCUMENT_ROOT']是个好主意吗?

冯哲彦
2023-03-14
问题内容

例如,这是个好主意吗?

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

如果您在同一台服务器上有两个虚拟主机,一个虚拟主机,一个虚拟主机,并且使用不同的Apache
DocumentRoots,则这将避免当include的来源未知并且可以在任何目录中时,不必包含绝对路径。

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

例如:我有一个/core/init.php,它是使用来自网站/file.php/dir/file.php or /dir/dir/file.php)各地的相对路径来调用的。

然后,此init.php在fund目录中包含子目录/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']));


 类似资料:
  • 问题内容: 我已经多次听到您不应该执行或出于性能方面的考虑,但是无法深入了解有关它的更多信息。 我可以想象数据库随后将 所有 列都用于操作,这可能会导致性能下降,但是我不确定。有人有关于该主题的更多信息吗? 问题答案: 1.关于count(*)vs. count(其他) SQL是声明性的,您可以指定所需的 内容 。这不同于指定 如何 获得所需的东西。这意味着数据库引擎可以自由地以其认为最有效的方式

  • 问题内容: 目前,我正在阅读Spring,用于AOP的示例之一是记录方法调用的开始和结束。 我还读到使用AOP会影响性能。 对于这种类型的日志记录,使用Spring AOP是个好主意吗?我的理解是,Spring使用动态AOP最好将静态AOP(如AspectJ)用于这种类型的AOP。 当前,我工作的公司的编码策略需要大量的日志记录,并且我想减少必须编写的日志记录代码量并提高代码的可读性。 我在树错树

  • 问题内容: 我公司在另一个国家/地区拥有一个开发团队,他们坚持使用Vue在我们现有平台的基础上构建新模块。我们的主要平台是基于React与Redux构建的单页面应用程序。 仅基于团队技能的混合框架是一个好主意吗?这两个框架是否可行? 问题答案: 如果主要原因是“我已经知道Vue”,那么我会拒绝。 如果他们已经知道Vue,应该很容易学会反应。 我认为这两个框架可以协同工作,您可以在使用Vue构建的R

  • 问题内容: 考虑我有如下代码: 假设经常调用。那么建议缓存如下: 就我对java方法引用的理解而言,使用方法引用时,虚拟机会创建一个匿名类的对象。因此,缓存引用只会创建一次该对象,而第一种方法是在每个函数调用上创建该对象。它是否正确? 是应该缓存出现在代码中热门位置的方法引用,还是VM能够对其进行优化并使多余的缓存?是否有一般的最佳实践,或者这种高度VM实现是否特定于这种缓存是否有用? Java

  • 问题内容: 我正在设计一个大型数据库。在我的应用程序中,我将有很多行,例如,我目前有一个包含400万条记录的表。我的大多数查询都使用datetime子句来选择数据。索引mysql数据库中的datetime字段是一个好主意吗? 我正在努力保持数据库正常运行,并且查询运行平稳 此外,您认为创建高效数据库应该有什么主意? 问题答案: MySQL建议出于各种原因使用索引,包括消除条件之间的行:http :

  • 问题内容: 在Android Exceptions中使用printStackTrace()是个坏主意吗? 问题答案: 是的,这是一个坏主意。相反,您应该使用专门为这些目的设计的Android内置日志类:http : //developer.android.com/reference/android/util/Log.html 它为您提供了记录调试消息,警告,错误等的选项。 使用以下命令记录错误: