我目前正在制作一个与phpBB论坛融合的网站。在official solution to phpBB3 Sessions Integration之后我使用以下代码来包含我的phpBB安装中的相关文件:
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'forums/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
我的论坛文件夹是(根路径)/ forums /,因此只要执行脚本位于域的根文件夹中,这就完美无缺。但是,如果我尝试从另一个文件夹中包含此代码,则会引发以下错误:
[phpBB Debug] PHP警告:在文件中 第5行的/home/unrealsp/public_html/includes/phpbb.php: include(forums / common.php)[function.include]:无法打开流: 没有这样的文件或目录[phpBB Debug] PHP警告:在文件中 第5行的/home/unrealsp/public_html/includes/phpbb.php: include(forums / common.php)[function.include]:无法打开流: 没有这样的文件或目录[phpBB Debug] PHP警告:在文件中 /home/unrealsp/public_html/includes/phpbb.php第5行:include() [function.include]:无法打开'forums / common.php'以包含 (include_path ='。:/ usr / lib / php:/ usr / local / lib / php')[phpBB Debug] PHP 警告:在文件/home/unrealsp/public_html/includes/phpbb.php上线 6:include(forums / includes / functions_display.php)[function.include]: 无法打开流:没有这样的文件或目录[phpBB Debug] PHP 警告:在文件/home/unrealsp/public_html/includes/phpbb.php上线 6:include(forums / includes / functions_display.php)[function.include]: 无法打开流:没有这样的文件或目录[phpBB Debug] PHP 警告:在文件/home/unrealsp/public_html/includes/phpbb.php上线 6:include()[function.include]:打开失败 'forums / includes / functions_display.php'包含在内 (include_path中= ':/ usr / lib中/ PHP:在/ usr /本地/ LIB / PHP')
我的解决方案尝试如下:
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'forums/';
到
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '/forums/';
但是,当从域根运行时,它就破坏了它,而不是修复它,这也是我不理解的东西。
如何从服务器上的任何位置可靠地包含我的phpBB代码?
附录:我目前正在为我的网站空间使用一个临时网址,该网址由一个带有用户文件夹的网址组成,例如http://XXX.XXX.XXX.XXX/~user/。但是,将变量更改为“/ ~user / forums /”也不起作用。
答案 0 :(得分:1)
我的网站遇到了同样的问题,我通过获取网页的网址并在每个网格中将其展开来解决。然后我在爆炸数组上使用count()
,它告诉我页面的目录结构有多深,并使用该数字将所需数量的../
'上一个目录'添加到根路径。< / p>
答案 1 :(得分:1)
由于我发现这个问题谷歌搜索同样的问题,我想指出$ phpbb_root_path与URL无关!它与phpBB安装目录的文件系统路径有关,相对于当前正在执行的PHP脚本(意图为&#34; PHP文件&#34;)。在一个非常基本的场景中,你可以忽略差异,但是当mod_rewrites在其中时,以正确的方式工作是很重要的。
由于我需要快速解决这个问题,因此我发现了这样的恐怖事件(SiteDir是一个常量定义为我的站点根目录的路径,即/ user / site /):
$dai=$_SERVER["SCRIPT_FILENAME"];
$dai2=str_ireplace("\\", "/", SiteDir);
$dai=str_ireplace($dai2, "", $dai);
$depth=substr_count($dai, "/");
$dai="";
for($i=0; $i<$depth; $i++)
{ $dai="../"; }
$dai.="forum/";
$phpbb_root_path=$dai;
另请关注this thread I opened on the phpBB support forum以获取更多&#34;官方&#34;如何使它发挥作用。