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