[被问及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服务器实现?我是否应该更改配置文件以在未设置的情况下明确设置它?
如果没有,是否有另一种方法可以提供一条安全的长期"临时"本地目录?
答案 0 :(得分:1)
$_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
?>