包括_SERVER ['DOCUMENT_ROOT']。 _SERVER ['SCRIPT_NAME']无法找到当前正在运行的脚本

时间:2013-04-06 16:09:25

标签: php file include

我正在尝试使用$ _SERVER ['DOCUMENT_ROOT']变量包含文件。到目前为止,我试图包含的每个文件都抛出了一个文件未找到的错误。我以为我只是把目录弄错了,所以我试着包含当前运行的脚本。我希望它能以递归方式包含在内,直到它耗尽堆栈并摔倒。

echo( 'document root = ' . $_SERVER['DOCUMENT_ROOT'] . '<br>' );
echo( 'script name   = ' . $_SERVER['SCRIPT_NAME'] . '<br>' );

$szServerPath   = $_SERVER['DOCUMENT_ROOT'];
$szIncludePath  = $szServerPath . $_SERVER['SCRIPT_NAME'];
echo( "including     = " . $szIncludePath );
include( $szIncludePath );

这导致以下输出:

document root = /var/httpd/htdocs
script name = /CSRC/Damflask/Main/Articles/index.php
including = /var/httpd/htdocs/CSRC/Damflask/Main/Articles/index.php
Warning: include_once(/var/httpd/htdocs/CSRC/Damflask/Main/Articles/index.php) [function.include]: failed to open stream: No such file or directory in /home/www/glmorriL/CSRC/Damflask/Main/Articles/index.php on line 33

看起来它仍然无法找到该文件。我包含的每个其他文件都显示相同的错误消息。为什么这不起作用?

编辑:似乎差异是由于“别名”。 http://php.net/manual/en/reserved.variables.server.php(参见杰米2年前的评论)。 没有等效路径吗?看起来DOCUMENT_ROOT对我来说完全没用。

谢谢, ģ

1 个答案:

答案 0 :(得分:2)

您可以从错误消息中看到您的文件路径应为:

/home/www/glmorriL/CSRC/Damflask/Main/Articles/index.php

显然/var/httpd/htdocs/...找不到它。

请尝试使用__FILE__魔术常量。