如何配置PHP服务器变量$_SERVER['DOCUMENT_ROOT']?

How to configure PHP server variable $_SERVER['DOCUMENT_ROOT']?

[询问 this at SU; 建议在 SO 重新发布]

我们有 PHP 程序使用 $_SERVER['DOCUMENT_ROOT'] 作为路径,我们可以将私有目录(使用唯一名称)放置在安全的已知位置服务器。该目录包含从多个可能数千个服务的 PHP 页面收集的数据摘要;此摘要对所服务页面的主要功能没有影响,最终可以忽略或删除。虽然存在,但基于 PHP 的工具可以检查摘要数据并提供报告。

这在各种 PHP 服务器上运行良好,似乎 "automatically" (?) 根据 PHP Manual documentation:

设置

'DOCUMENT_ROOT'

   The document root directory under which the current script
   is executing, as defined in the server's configuration file.

多年来,我们安装了几个不同的 PHP 服务器,它们似乎都预配置到了合理的路径,而我们没有进行任何明确的配置工作。

我们有一些使用我们软件的客户抱怨这个路径似乎被设置为空,这似乎与上面的定义不一致。 (null 是否表示某些特殊路径?)(其中一个客户声称他们有 (php -v) "PHP 5.6.16-3+deb.sury.org~trusty+1 (cli) ... Zend Engine v2.6.0, ... with Zend OPcache v7.0.6-dev, ..." 和 (uname -or) "3.19.0-25-generic GNU/Linux " [??通用 GNU/Linux??]

请原谅我的无知,但是 DOCUMENT_ROOT 是可配置的项目吗?在哪里可以找到服务器 "configuration file"?所有不同的 PHP 服务器实现都在同一个地方吗? I/should 如果未设置,我可以更改该配置文件以明确设置它吗?

如果没有,是否有另一种方法可以提供通往安全的长期 "temporary" 本地目录的路径?

$_SERVER['DOCUMENT_ROOT'] 在您的 apache httpd.conf 中找到并且可以配置。这是您将从中提供文档的目录。默认情况下,所有 Web 请求都取自此目录,因此它不应为空。

这个 link 让您快速 运行 了解为什么 documentroot 就位:http://httpd.apache.org/docs/2.4/urlmapping.html#documentroot.

我个人认为对我完全控制的服务器使用 $_SERVER['DOCUMENT_ROOT'] 没有问题,但由于配置中的别名,我会谨慎使用共享托管解决方案上的此路径引用。在这种情况下,我只是手动设置 $_SERVER['DOCUMENT_ROOT']

<?php 

echo $_SERVER['DOCUMENT_ROOT'];//Real Path

$_SERVER['DOCUMENT_ROOT'] = "/new/path/www";

echo $_SERVER['DOCUMENT_ROOT'];//New Path

?>