【发布时间】:2016-10-14 17:02:32
【问题描述】:
[问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 服务器实现都在同一个地方吗?如果未设置,我可以/应该更改该配置文件以明确设置吗?
如果没有,是否有其他方法可以提供安全的长期“临时”本地目录的路径?
【问题讨论】:
-
这是由运行代码的特定站点/虚拟主机的网络服务器配置设置的。在 apache 中,字面意思是
DocumentRoot /foo/bar/baz。这不是您可以(或不想)在 PHP 中覆盖的东西。 -
我不确定
$_SERVER['DOCUMENT_ROOT']怎么可能是null,除非您通过命令行执行PHP,在这种情况下没有文档根目录。
标签: php linux zend-framework