我已经在互联网的尽头搜索了这个问题的答案,我即将得出一个合乎逻辑的结论,即这是不可能的。当包含在不同目录/级别中具有其他多个文件依赖于它的文件时,究竟是如何使用相对根?
例如,这是我网站的简化树:
Main site (PHP reports the main root to be: /Users/Luke/Sites/)
-> index.php
-> directoryfolder - > secondaryindex.php
-> templates -> header.php
-> navigation.php
即,如果要在Finder 中导航到index.php,他们会看到目录为/Users/Luke/Sites/SiteAlpha/index.php。
index.php 和 directoryfolder/secondaryindex.php 都包含 header.php,然后包含 navigation.php。问题似乎是,无论我在 header.php 上命名 navigation.php 的包含位置,它都只会允许一个页面正确显示它。IE:
如果在 index.php 上调用 navigation.php(通过 header.php),包含位置为 ROOT_PATH.'/templates/navigation.php(其中 ROOT_PATH 等于 dirname( __DIR__
)),它根本不会显示。但它适用于secondaryindex.php。
反之亦然。如果在 index.php 上调用 navigation.php(通过 header.php),包含位置为 ROOT_PATH.'/siteAlpha/templates/navigation.php,它实际上会工作。但是它不适用于secondaryindex.php。
TL;DR,由于 header.php 被不同目录级别的多个页面调用,navigation.php 的包含必须同时是我的第一个示例和我的第二个示例。
我尝试使用我自己定义的根常量 $_SERVER['DOCUMENT_ROOT'], dirname( __DIR__
), __FILE__
,但没有任何成功。我已经阅读了无数文章和 SO 问题,但没有任何帮助。它只是行不通。
有人可以给我一个 ELI5 解释,说明我需要做什么才能使其正常工作吗?