当使用 PHPinclude()
和require()
函数来包含一个文件,而该文件又包含另一个文件时,第二个文件的 PWD(相对引用)include()
是原始脚本位置(Apache 调用堆栈中的第一个脚本)的目录,而不是当前文件。其背后的设计决策是什么,用例是什么?
例如,假设定义了一个通用数据库连接类,~/public_html/classes/database.php
其中将其配置数据(用户名、密码)存储在~/config.php
. 数据库配置类的作者会在逻辑上使用相对文件名调用配置文件../../config.php
。但是,这不能按预期工作,因为 PWD 不是database.php
文件,而是包含它的文件,可能是~/public_html/index.php
,~/public_html/someDir/somePage.php
或其他地方。
我知道通过获取当前文件的目录来解决这个问题dirname(__FILE__)
。但是,我想不出我想要require()
或include()
相对于原始脚本位置的单个用例。保持原样的用例是什么?