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

Codeigniter 4本地运行正常,线上服务器无法连接数据库求助

Codeigniter 4 线上服务器数据库连接失败排查

本地开发环境运行正常,上传至线上服务器后出现「Unable to connect to the database.」错误,以下是当前配置及排查方向:

当前配置

database.php 配置

public $default = [
    'DSN'      => '',
    'hostname' => 'test.mysql.database.test.com',
    'username' => 'testusername',
    'password' => 'testpassword',
    'database' => 'testdb',
    'DBDriver' => 'MySQLi',
    'DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => (ENVIRONMENT !== 'production'),
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => array(
                'ssl_ca' =>'',
                'ssl_verify' =>FALSE),
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
    
];

.env 配置

database.default.hostname = test.mysql.database.test.com
database.default.database = testdb
database.default.username = testusername
database.default.password = testpassword
database.default.DBDriver = MySQLi
database.default.encrypt.ssl_verify = true
database.default.encrypt.ssl_ca = './etc/certs/test.pem'

排查步骤

  • SSL证书路径验证:.env中配置的./etc/certs/test.pem是相对路径,线上服务器的文件结构可能和本地不同,需确认证书文件是否存在,建议改用绝对路径(如/var/www/your-project/etc/certs/test.pem)测试
  • SSL验证配置冲突:database.php里ssl_verify设为FALSE,但.env中设为true,CI4会优先读取.env配置。若线上SSL证书未正确配置,可临时将.env中的ssl_verify改为false,看是否能连接成功
  • 数据库IP白名单:检查云数据库控制台是否添加了线上服务器的公网IP到访问白名单,很多云数据库默认只允许本地IP访问
  • 端口连通性测试:在服务器上执行telnet test.mysql.database.test.com 3306或nc -zv test.mysql.database.test.com 3306,确认3306端口是否能正常连通
  • .env文件加载检查:确保线上服务器的.env文件存在且权限正确,CI4在production环境下需保证.env文件可被PHP读取
  • MySQLi扩展检查:执行php -m命令,确认服务器已安装MySQLi扩展,若缺少需安装对应扩展

内容的提问来源于stack exchange,提问作者userdev2222

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:54:57