phpbb论坛语法高亮插件o0johntam0o产生空白行的解决方法

发表回复

确认码
输入您在图片中看到的字符,不必区分大小写。
表情
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode 允许
[img] 允许
[url] 允许
表情 允许

主题浏览
   

展开视图 主题浏览: phpbb论坛语法高亮插件o0johntam0o产生空白行的解决方法

Re: phpbb论坛语法高亮插件o0johntam0o产生空白行的解决方法

BG6RSH » 周二 8月 25, 2026 10:11 am

错误原因分析
从报错信息可以看出,Symfony 路由加载器在解析 /volume1/web/phpBB3/ext/o0johntam0o/codeboxplus/config/routing.yml 文件时,遇到了不支持的键名 pattern。
在较老版本的 Symfony 路由组件中,定义路由路径使用的是 pattern 键;但在 phpBB 3.2.x 及更高版本中,Symfony 路由组件进行了升级,废弃了 pattern,强制要求使用 path 键。由于该扩展没有更新以适配新版 phpBB,导致系统抛出异常并崩溃。
. 手动修改配置文件(临时应急)
如果你急需使用该插件且暂无更新版本,可以手动修复路由文件:
打开文件:/volume1/web/phpBB3/ext/o0johntam0o/codeboxplus/config/routing.yml
找到包含 pattern: 的那一行(例如 pattern: '/codeboxplus')。
将 pattern: 修改为 path:。
保存文件,并清除 phpBB 缓存(删除 /cache 目录下的 cache_data 和 twig 文件夹内容,但保留 .htaccess 和 index.htm)。
建议: 修改核心配置文件只是临时手段,长远来看还是建议寻找该扩展的替代品或等待作者发布兼容新版 phpBB 的更新。
  1. o0johntam0o_codeboxplus_base_controller:
  2.     path: /codeboxplus
  3.     defaults: { _controller: o0johntam0o.codeboxplus.controller:base }
  4.  
  5. o0johntam0o_codeboxplus_download_controller:
  6.     path: /codeboxplus/download/{id}-{part}
  7.     defaults: { _controller: o0johntam0o.codeboxplus.controller:downloader, id:0, part:0 }
  8.     requirements:
  9.         id: \d+
  10.         part: \d+

Re: phpbb论坛语法高亮插件o0johntam0o产生空白行的解决方法

BG6RSH » 周六 10月 18, 2025 1:14 am

GeSHi 旧版用了 PHP 8 已经废弃的 create_function(),运行时爆致命错。修改/ext/o0johntam0o/codeboxplus/includes/geshi/geshi.php文件,手工改第 4746 行(以及后面若干行)
原旧代码:
  1.         if (!$recursed) {
  2.             $list = preg_replace('#\(\?\:(.)\)\?#', '\1?', $list);
  3.             static $callback_2;
  4.             if (!isset($callback_2)) {
  5.                 $callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
  6.             }
  7.             $list = preg_replace_callback('#\(\?\:((?:.\|)+.)\)#', $callback_2, $list);
  8.         }
修改后的代码:
  1. if (!$recursed) {
  2.     // 1. 把 (?:a|b|c) 改写成 [abc]
  3.     $list = preg_replace('#\(\?\:(.)\)\?#', '\1?', $list);
  4.  
  5.     static $callback_2;
  6.     if (!isset($callback_2)) {
  7.         $callback_2 = function ($matches) {
  8.             return '[' . str_replace('|', '', $matches[1]) . ']';
  9.         };
  10.     }
  11.     $list = preg_replace_callback('#\(\?\:((?:.\|)+.)\)#', $callback_2, $list);
  12. }

phpbb论坛语法高亮插件o0johntam0o产生空白行的解决方法

BG6RSH » 周六 10月 18, 2025 1:09 am

该插件会自动为代码添加一个空行;如果原代码有一空行,则它会在原来的基础上增加1个空行。经过查找需要修改一下“\ext\o0johntam0o\codeboxplus\event\main_listener.php”文件中的第99行内容:
  1. // 修改前
  2. return $this->codebox_template(preg_replace('#\<br\\s*/?\>#msi', "\n", $arg[3]), $arg[1], $arg[2], $post_id, ++$part);
  3. // 修改后
  4. return $this->codebox_template(preg_replace('#\<br\\s*/?\>#msi', "", $arg[3]), $arg[1], $arg[2], $post_id, ++$part);

页首