绝对/相对路径:PHP和HTML之间的根差异



我当前正在尝试将我的PHPBB安装集成到我构建的自定义CMS中。PHPBB在其许多功能中都依赖一个名为$phpbb_root_path的变量,该变量既可以在幕后(用于包含其他PHP等)以及创建前端超链接和图像链接。

PHPBB的方法是将以下代码包括在每个PHP文档:

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'forums/';
print_r(dirname(__FILE__));
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require_once( $phpbb_root_path . 'common.' . $phpEx);
require_once($phpbb_root_path . 'includes/functions_display.' . $phpEx);

然后根据文档与论坛的位置更改$phpbb_root_path变量。这是一种功能齐全的方法,但是我希望通过require_once从单独的.php文件中包含代码,以避免使用我的自定义模板系统的问题,因此我不必复制我拥有的每个文档中的相同代码。

症状:上述代码(如果包括在内),只要包括文档在我的文档root 中(其中哪个/forums/是一个子目录)),但它总是会在其他任何地方断裂,或与.htaccess url_rewrite

使用

问题:不可能简单地将$phpbb_root_path定义为'/forums/'或'/〜(userId)/forums/',这是显而易见的,简单的解决方案。为什么?因为HTML和PHP视为根(领先的斜线)之间存在差异。

通过打印dirname(__FILE__),我确定我的PHP安装将/home/(USERID)/public_html/视为根。但是,html,(显然)将www.domain.com作为root。

您可以想象,这导致了问题:

1)如果我将$phpbb_root_path定义为/home/(USERID)/public_html/,则PHP部件(包括等)将起作用,但是打印HTML的任何功能都会导致拧紧,例如<img> S链接到(WWW.DOMAIN.COM)/home/(USERID)/public_html/(link to image)

2)如果我将$phpbb_root_path定义为/forums/,则该页面将根本不显示,因为PHP将尝试找到一个名为"/forums/"的目录,在与"/home/"/" home/"。

问题:是否有一种简单/聪明的方法可以在PHP/HTML根文件夹定义之间删除此差异,例如,通过将PHP根请为/home/(USERID)/public_html/?或者我没有任何选择,但在每个文档中包括代码并根据文档的位置使用相对路径?

获取页面URL,在斜线上爆炸,计数结果数组,然后使用该数字来确定您对目录结构的深入,以确定root Path的相对URL/p>

最新更新