CodeIgniter登录后ArgumentCountError及CI_Controller缺失问题求助
修复CodeIgniter登录触发的参数计数错误
问题分析
当前触发的ArgumentCountError是因为PHP 7及以上版本中,系统抛出的Error类异常会直接传递1个参数给异常处理函数,但旧版CodeIgniter的_exception_handler()函数定义要求传入4个参数,导致参数不匹配。
修复步骤
- 打开路径
C:\xampp\htdocs\public\system\core\Common.php,定位到第470行的_exception_handler()函数。 - 修改函数定义,兼容PHP 7+的异常传递方式:
原函数定义通常为:
将其修改为兼容两种调用方式的版本:function _exception_handler($severity, $message, $filepath, $line)function _exception_handler($param1, $param2 = null, $param3 = null, $param4 = null) { // 处理PHP 7+传入的Error/Exception对象 if ($param1 instanceof \Throwable) { $severity = property_exists($param1, 'severity') ? $param1->severity : E_ERROR; $message = $param1->getMessage(); $filepath = $param1->getFile(); $line = $param1->getLine(); } else { // 保留原CodeIgniter的参数传递逻辑 $severity = $param1; $message = $param2; $filepath = $param3; $line = $param4; } // 保留原函数内的所有处理逻辑,不要修改这部分 // ...(原函数代码) } - 保存文件后重新测试登录,确认错误不再出现。
关联问题说明
之前遇到的CI_Controller未找到问题解决后触发此错误,本质是旧版CodeIgniter对PHP 7+的错误处理机制兼容不足,修改异常处理函数即可完成适配。
内容的提问来源于stack exchange,提问作者animloss
相关产品推荐
相关产品推荐

