You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地MAMP运行CodeIgniter3项目报错,PHP8.0.3环境下求解决方案

问题:CodeIgniter 3 在PHP 8.0.3(MAMP)环境下运行报错

本地MAMP服务器(PHP版本8.0.3)运行CodeIgniter3项目时出现报错,该项目原本可在Windows服务器正常运行,怀疑是CodeIgniter3与PHP8.0.3不兼容导致。

数据库配置代码

$db['default']['hostname'] = 'localhost:8888';
$db['default']['username'] = 'root';
$db['default']['password'] = 'root';
$db['default']['database'] = 'mansions_new_live';
$db['default']['dbdriver'] = 'mysqli';
$db['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

报错截图

  • 基础报错:error showing image
  • 使用mysqli驱动时的报错:when using mysqli db driver

解决方法

CodeIgniter 3.x原生对PHP 8.0+的兼容性有限,按以下步骤逐一排查修复:

  1. 修正数据库连接配置

    • 端口错误:MAMP默认MySQL端口是8889,你配置的8888是Apache的端口,将hostname改为localhost:8889,或者直接写localhost(如果MAMP使用socket连接)。
    • 关闭持久连接:PHP 8.0已废弃旧的持久连接实现,将$db['default']['pconnect'] = TRUE;改为FALSE。
  2. 升级CodeIgniter 3到最新兼容版
    下载CodeIgniter 3.1.13及以后的版本(官方已修复大部分PHP8兼容问题),替换项目中的system文件夹,注意保留自己的application目录、index.php等自定义文件。

  3. 手动修复核心文件兼容问题(不升级时用)
    打开system/database/drivers/mysqli/mysqli_driver.php,找到db_pconnect()方法,替换为:

    function db_pconnect()
    {
        // PHP 8.0+ 不支持旧持久连接逻辑,直接调用普通连接方法
        return $this->db_connect();
    }
    
  4. 排查项目中的废弃函数
    检查项目代码是否使用了PHP8已废弃的函数(如each()、create_function()),这些函数在CI3旧版本中可能存在,需要替换为现代写法(比如用foreach替代each())。

  5. 临时调试:调整错误报告级别
    在项目根目录的index.php开头添加代码,屏蔽废弃警告:

    error_reporting(E_ALL & ~E_DEPRECATED & ~E_WARNING);
    

内容的提问来源于stack exchange,提问作者Manjusha K Vijayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:40:18