__DIR__和DOCUMENT_ROOT返回不同的值,但两者都有效。为什么?

时间:2014-11-28 08:40:17

标签: php

我已将此代码保存为客户端主机根目录中的dr.php。从输出中可以看出,__DIR__$_SERVER['DOCUMENT_ROOT']不同;但他们都找到dr.php

发生了什么事?假设DOCUMENT_ROOT 总是有效吗?

dr.php的代码

<pre>
<?php
var_dump($_SERVER['DOCUMENT_ROOT']);
var_dump(file_exists($_SERVER['DOCUMENT_ROOT'] . '/dr.php'));
var_dump(__DIR__);
var_dump(file_exists(__DIR__ . '/dr.php'));
?>
</pre>

输出

string(36) "/usr/local/etc/httpd/htdocs/daikaidk"
bool(true)
string(34) "/usr/local/apache2/htdocs/daikaidk"
bool(true)

1 个答案:

答案 0 :(得分:3)

根据doc

  

__ DIR__:文件的目录。如果在include中使用,则返回包含文件的目录。这相当于   目录名(__ FILE__)。此目录名称没有尾部斜杠   除非它是根目录。

  

__ FILE__文件的完整路径和文件名已解决,符号链接已解决。如果在include中使用,则包含文件的名称为   返回。

因此,您已使用DOCUMENT ROOT /usr/local/etc/httpd/htdocs/daikaidk配置了您的网络服务器(Apache),这是/usr/local/apache2/htdocs/daikaidk的符号链接。

在PHP中__DIR__返回解析符号链接的真实路径。

相关问题