我被the issue in this question击中:PHP的include
,require
,require_once
等的路径分辨率不是我预期的。
这个问题的根本原因显然是所有PHP文件中的路径都是相对于最初执行的脚本的位置来解析的。但是,我和许多其他人一样,希望解决方案相对于include
/ require
所包含的文件位置。
我链接的问题的答案解释了这种行为,但没有解决如何解决它。在我看来,PHP的解析方法本质上是非组合的:每个文件都必须假设它是从特定位置包含的,这打破了模块自包含的组合原则。
那么,我该如何解决这个问题呢?是否存在require_once
的“固定”版本,它使用了我和其他人期望的解析语义?
答案 0 :(得分:3)
使用__DIR__
。
例如:
require __DIR__ .'/file_in_same_directory.php';
http://www.php.net/manual/en/language.constants.predefined.php