1

自去年 10 月以来,我的 php 脚本运行良好,上次我记得是 2 个月前,今天在执行它们时我遇到了 _SERVER['DOCUMENT_ROOT'] 变量的问题。

如果我查看 _SERVER 数组,它没有设置。如果我在脚本中执行:

phpinfo();

然后变量在那里并设置。但是调用它:

$_SERVER['DOCUMENT_ROOT']

返回空

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

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

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

4

3 回答 3

1

试试看print_r($_SERVER)是否真的设置好了

于 2012-04-24T11:51:12.803 回答
1

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

您可以尝试使用 mod-rewrite、mod-cgi、mod-setenv 或类似工具进行调试和/或修复。如果这完全超出您的想象,请联系您的服务器管理员并讨论该问题,因为它可能有很多原因。

于 2012-04-24T20:08:51.630 回答
0

如果可能是 Apache 配置问题:您是否在 Apache 配置文件中定义了文档根目录?

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

dirname(__FILE__)

或者 :

substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));
于 2012-04-24T15:58:49.187 回答