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

时间:2016-10-14 17:02:32

标签: php linux zend-framework

[被问及this at SU;建议有人重新发布SO]

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

这在各种PHP服务器上运行良好,并且似乎是自动" (?)根据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,这似乎与上述定义不一致。 (null表示一些特殊的路径吗?)(其中一个客户声称他们有(php -v)" PHP 5.6.16-3 + deb.sury.org~trusty + 1(cli)... Zend Engine v2.6.0,...与Zend OPcache v7.0.6-dev,..."和(uname -or)" 3.19.0-25-generic GNU / Linux" [?? Generic的GNU / Linux ??]

请原谅我的无知,但是DOCUMENT_ROOT是一个可配置的项目吗?我在哪里可以找到服务器"配置文件"为了这?它是否适用于所有不同的PHP服务器实现?我是否应该更改配置文件以在未设置的情况下明确设置它?

如果没有,是否有另一种方法可以提供一条安全的长期"临时"本地目录?

1 个答案:

答案 0 :(得分:1)

您的apache $_SERVER['DOCUMENT_ROOT']中找到

httpd.conf,可以对其进行配置。它是您将提供文档的目录。默认情况下,所有Web请求都来自此目录,因此它不应为null。

此链接可让您快速了解原始文档的原因: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

?>