将CodeIgniter网站从线上迁移至本地服务器时遇报错求助
解决CodeIgniter迁移本地的两个错误:Session构造器弃用与mysql_pconnect未定义
你遇到的这两个问题都是因为本地PHP版本比线上服务器更新导致的——现在主流PHP版本已经弃用了旧语法和扩展,下面给你具体的修复步骤:
1. 处理CI_Session构造器弃用警告
这个警告是PHP 8.0+的新特性:与类同名的方法不再被当作构造函数,而旧版CodeIgniter的CI_Session类还在用这种过时写法。
修复方法:
- 打开文件
system/libraries/Session.php,找到第12行的function CI_Session()方法 - 将它重命名为
function __construct(),如果该方法原本没有调用父类构造,记得加上parent::__construct();(如果有继承关系的话)
修改后的代码示例:
function __construct() { parent::__construct(); // 保留原来CI_Session方法里的所有业务代码 }
2. 解决致命错误:mysql_pconnect()未定义
这个是核心问题,直接导致网站无法运行。原因是PHP 7.0及以上版本已经彻底移除了mysql扩展,而你的CodeIgniter还在依赖已被移除的mysql数据库驱动。
修复步骤:
- 打开
application/config/database.php配置文件 - 找到
$db['default']['dbdriver']这一行,把值从'mysql'改成'mysqli' - 同步检查该文件里的其他数据库配置项:
hostname(本地一般是'localhost')、username(XAMPP默认是'root')、password(XAMPP默认为空或你自定义的密码)、database(本地导入的数据库名称),确保这些和你本地XAMPP的MySQL配置完全匹配 - 最后确认XAMPP中PHP的mysqli扩展已开启:可以在XAMPP控制面板的PHP设置里查看,或者创建
phpinfo.php文件输出信息,搜索mysqli确认状态为enabled
完成以上操作后,重启XAMPP的Apache和MySQL服务,再访问网站应该就能正常运行了。
内容的提问来源于stack exchange,提问作者fatimah
相关产品推荐
相关产品推荐

