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

标签 php linux zend-framework

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

我们有使用 $_SERVER['DOCUMENT_ROOT'] 作为路径的 PHP 程序,我们可以将私有(private)目录(使用唯一名称)放置在服务器上安全、已知的位置。该目录包含从多个可能是数千个服务的 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 是否表示某些特殊路径?)(其中一个客户声称他们有 (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 服务器实现都在同一个地方吗?如果未设置,我可以/应该更改该配置文件以明确设置它吗?

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

最佳答案

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

此链接可让您快速了解为什么使用 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

?>

关于php - 如何配置 PHP 服务器变量 $_SERVER ['DOCUMENT_ROOT' ]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40048444/

相关文章:

php - 下载文件的单元测试

linux - stty : standard input: Inappropriate ioctl for device

zend-framework - Zend 框架嵌套复选框

php - zend 指定的文档类型错误

C 线程套接字 - 带有 TLS 的 tcp,无法获取 ip/ether 数据包 header

php - 值得学习的优秀 Zend Framework 示例应用程序

php - WordPress pre_get_posts 不工作

php - MySQL 请求返​​回 null Controller PHP

PHP/图形 API : Why my facebook session doesn't work's?

C语言连接远程主机(Socket编程)