Php 文档根集,但可以';我无法用脚本来理解它。为什么?

Php 文档根集,但可以';我无法用脚本来理解它。为什么?,php,apache,apache2,ini,Php,Apache,Apache2,Ini,我有一些php脚本,从去年十月开始运行正常,我记得上次是2个月前,今天在执行它们时,我遇到了_SERVER['DOCUMENT_ROOT']变量的问题 如果我查看_服务器阵列,它没有设置。而如果我在脚本中执行: phpinfo(); 然后变量就在那里并设置好了。但称之为: $_SERVER['DOCUMENT_ROOT'] 返回空值 这是什么原因?如何在脚本中再次使用它?我认为原因是php或apache更新,但在过去2个月内,这两个版本都更新了几次 另外,我在php.ini文件中没有看到文档

我有一些php脚本,从去年十月开始运行正常,我记得上次是2个月前,今天在执行它们时,我遇到了_SERVER['DOCUMENT_ROOT']变量的问题

如果我查看_服务器阵列,它没有设置。而如果我在脚本中执行:

phpinfo();
然后变量就在那里并设置好了。但称之为:

$_SERVER['DOCUMENT_ROOT']
返回空值

这是什么原因?如何在脚本中再次使用它?我认为原因是php或apache更新,但在过去2个月内,这两个版本都更新了几次

另外,我在php.ini文件中没有看到文档_ROOT。我确实看到了doc_root,这是不同的

我的php: PHP版本5.3.5-1ubuntu7.7 阿帕奇:
PHP版本5.3.5-1ubuntu7.7

尝试
print\r($\u SERVER)
,看看它是否真的设置了如果可能是Apache配置问题:您是否在Apache配置文件中定义了文档根目录

否则,您可以使用以下方法绕过它:

dirname(__FILE__)
或:


DOCUMENT\u ROOT
是一个环境变量,通常由(apache)Web服务器在通过CGI调用脚本之前设置。如果您的Web服务器存在错误或配置错误,则可能不再设置此环境变量


您可以尝试使用mod rewrite、mod cgi、mod setenv或类似工具对其进行调试和/或热修复。如果这一切都超出了您的理解范围,请联系您的服务器管理员并讨论这个问题,因为它可能有很多原因。

正如我所写的,文档中包含一个空字符串。\u roots您是否从命令行调用脚本?而不是经常从浏览器打电话?是的,就是这样,谢谢:)。用浏览器试过了,我想就像Hakre说的,这个变量来自apache,因为调用终端跳过了这个,所以这个变量是空的。是的,事实证明这个变量是空的,因为我是从终端调用脚本的,所以跳过了apache。谢谢
substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));