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


__DIR__ and DOCUMENT_ROOT return different values, but both work. Why?

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

这是怎么回事?假设DOCUMENT_ROOT总是有效是否安全?

博士代码.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)

根据文档

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

__FILE__ 解析了符号链接的文件的完整路径和文件名。如果在包含中使用,则包含文件的名称为 返回。

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

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

相关文章: