我目前正在制作一个与phpBB论坛融合的网站。根据phpBB3会话集成的官方解决方案,我使用了以下代码来包含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警告:在文件/home/unrealsp/public _ html/includes/phpBB . PHP第5行:include(forums/common . PHP)[function . include]:打开流失败:没有这样的文件或目录[phpBB Debug] PHP警告:在文件/home/unrealsp/public _ html/includes/phpBB . PHP第5行:include(forums/common . PHP)[function . include]:打开流失败:没有这样的文件或目录[phpBB Debug] PHP:/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/includes/include:/usr/lib/PHP:/usr/local/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 代码?
附录:我目前正在为我的网络空间使用一个临时URL,它由一个带有用户文件夹的URL组成,如http://XXX.XXX.XXX.XXX/~user/.但是,将变量更改为“/~用户/论坛/”也不起作用。
因为我发现这个问题是在谷歌上搜索到的,所以我想指出$phpbb_root_path与URL无关!它与phpBB安装目录的文件系统路径有关,相对于当前执行的PHP脚本(意为“PHP文件”)。在一个非常基本的场景中,您可以忽略这种差异,但是当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;
另外,请关注我在phpBB支持论坛上发表的这个帖子,以获得更多的“官方”方法来使它工作。
我的网站也遇到了同样的问题,我通过获取页面的URL并在每一个斜杠处将其分解来解决。然后,我在分解数组上使用count()
,它告诉我页面在目录结构中的深度,并使用该数字将所需数量的../
“up a directory”添加到根路径。
问题内容: 我有/root/update/test.php文件。还有一个文件/root/connect.php; 该文件有一行 在/root/update/test.php中。有代码 当我运行/root/update/test.php时,它找到connect.php,但是找不到config.php,这给了我 这让我感到困惑,因为这些警告使我似乎似乎在正确地进行所有操作-包含路径为/ root,并且
问题内容: 我在理解有关PHP相对包含路径的规则集时遇到了麻烦。如果我运行文件A.PHP-,文件A.PHP包含文件B.PHP,其中文件C.PHP,则C.PHP的相对路径应该与B.PHP的位置有关,还是与A的位置有关.PHP?也就是说,从哪个 文件 调用include或仅从当前工作目录是什么以及确定当前工作目录的文件有关系吗? 问题答案: 它相对于主脚本,在本例中是A.php。请记住,只是将代码插入
我正在设置并配置哪些字体可用于Apache FOP,并希望使用相对路径而不是绝对路径: 有没有可能将渲染器中字体目录设置为使用相对路径? 或者可以以编程方式设置它,在这种情况下,我可以利用 获取完整路径?
问题内容: 所以这是我的程序,可以正常工作: 如您所见,我正在使用我要读取的文件的绝对路径: 当我尝试使用相对路径时会出现问题: 我收到一个错误: 文件usnumbers.txt与ScanSum.class文件位于同一目录中: 我该如何解决? 问题答案: 从哪个目录执行该类文件?(这将是相对路径的当前工作目录和基本目录。) 如果仅从eclipse启动应用程序,则项目目录将是工作目录,在这种情况下,
本文向大家介绍解决vue单页面应用打包后相对路径、绝对路径相关问题,包括了解决vue单页面应用打包后相对路径、绝对路径相关问题的使用技巧和注意事项,需要的朋友参考一下 在项目开发过程中,在部署过程中,用到了反向代理,这就要求前端代码中不能使用绝对路径。但是我们知道,一般情况下,通过webpack+vuecli默认打包后的HTML、css、js等文件,使用的都是绝对路径。下面可以举几个例子来看一下:
问题内容: 我将Maven约定用于源路径(src / main src / test),并且我的sql脚本位于src / main / resources / scripts中。 我想用H2内存运行我的应用程序,我想使用jdbc url初始化我的数据库: 我的问题是,这个相对路径(src / main / …)不起作用,并且如果init = runscript命令什么都没有针对,则H2不会崩溃。