codeigniter 需按版本选择 rollbar 集成方式:ci3 用过时的 rollbar_codeigniter v1.x(仅兼容 php 7.4);ci4 应直连 rollbar/rollbar-php v2+,通过 errors.php 和 errorhandler.php 手动上报,且须配对 access_token、environment 并关闭 display_errors。

CodeIgniter 本身不内置远程错误上报能力,Rollbar_CodeIgniter 是社区维护的轻量适配层,它把 CodeIgniter 的异常和日志转发给 Rollbar 服务。直接装官方 rollbar/rollbar-php SDK 并手动 hook 就行,不需要额外找“专用包”——那些包大多已停止更新,且与 CI4 的 PSR-15 中间件机制不兼容。
确认你用的是 CodeIgniter 3 还是 4
这是最关键的前置判断:
- CI3:靠
Exceptions::log_exception()和set_exception_handler()拦截;Rollbar_CodeIgniter(v1.x)能跑,但依赖过时的rollbar/rollbarv0.x,已不支持 PHP 8.1+; - CI4:原生支持 PSR-3 日志器 + 异常监听器,应直接集成官方
rollbar/rollbar-phpv2+,通过App\Errors\ErrorLogger或自定义ThrowableRenderer注入; - 查版本最准的方式是看
system/CodeIgniter.php文件头注释,或运行php -r "echo CI_VERSION;"(CI3) /php spark version(CI4)。
CI4 中集成 Rollbar 的标准做法
跳过所有第三方封装,直连官方 SDK:
- 用 Composer 安装:
composer require rollbar/rollbar-php; - 在
app/Config/Services.php的public static function errors()方法里注册 Rollbar 实例(不要塞进logging); - 重写
app/Config/Exceptions.php中的$handles数组,确保Throwable被捕获; - 关键一步:在
app/Errors/ErrorHandler.php(或新建该文件)中,于handleException()和handleError()里调用\Rollbar\Rollbar::error()或::critical(); - 注意:CI4 默认会把
error_log()写入writable/logs/,Rollbar 不会自动接管这部分,需显式转发 —— 别指望log_threshold设置能触发上报。
CI3 中勉强可用但必须降级的方案
仅限仍运行 PHP 7.4 且无法升级的遗留系统:
- 强制指定旧版依赖:
composer require rollbar/rollbar:0.18.2 phpdocumentor/reflection-docblock:2.0.4; -
Rollbar_CodeIgniter的config/rollbar.php必须设'environment' => ENVIRONMENT,否则生产环境默认静默; - CI3 的数据库错误(如
mysqli报错)默认不走Exceptions::log_exception(),得在system/database/DB_driver.php的_error_handler()末尾手动加\Rollbar\Rollbar::error($msg, $err); - 常见报错:
Call to undefined method Rollbar\Payload\Level::fromName(),说明 SDK 版本和封装层不匹配,立刻回退到 v0.18.2。
容易被忽略的配置细节
无论 CI3 或 CI4,以下三项不设对,90% 的错误根本不会发到 Rollbar 后台:
-
access_token必须是 “post_server_item” 类型的 token,不是 dashboard 或 read-only token; -
environment值要和 CI 的ENVIRONMENT常量一致(如'development'、'staging'),Rollbar 控制台按此过滤; - CI4 的
.env若设了CI_ENVIRONMENT = production,但没关掉display_errors,PHP 会先吐出致命错误页面,Rollbar 来不及捕获 —— 必须确保ini_set('display_errors', '0')在入口脚本早期执行。











