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

Docker+PhpStorm+Xdebug调试CodeIgniter时MySQL连接失败

Docker环境下PhpStorm PHP-CLI配置指南(针对你的CodeIgniter调试场景)

1. 基础PHP解释器配置

  • 打开PhpStorm设置(File > Settings 或 Ctrl+Alt+S),进入Languages & Frameworks > PHP
  • 点击「CLI Interpreter」右侧的「...」,再点「+」选择「From Docker, Vagrant, VM, WSL...」
  • 选择你的Docker环境(如Docker Desktop),直接选中已运行的CodeIgniter app容器(不要新建容器)
  • 确认「PHP executable」路径正确(比如容器内的/usr/bin/php),保存解释器

2. 同步容器环境与网络

  • 返回解释器配置页,切换到「Environment Variables」标签:
    • 添加数据库相关变量:DB_HOST=mysql(mysql是你的MySQL容器服务名,phpMyAdmin能连说明这个名称正确)
    • 同步容器内其他环境变量(如DB_USER、DB_PASSWORD、DB_NAME),直接从容器的环境变量列表复制
  • 切换到「Docker Container Settings」标签,确保「Network」选择和MySQL容器一致的Docker网络(比如docker-compose默认的xxx_default网络,或你自定义的网络)

3. 运行/调试配置的卷映射检查

  • 打开「Run/Debug Configurations」(右上角下拉选「Edit Configurations...」)
  • 选中你的CodeIgniter调试配置(比如指向index.php的PHP脚本)
  • 在「Configuration」标签确认使用刚才配置的Docker解释器
  • 切换到「Docker Container」标签,验证本地项目目录与容器内目录完全映射(比如本地/Users/xxx/project映射到容器/var/www/html),避免PhpStorm运行的代码和容器命令行环境的代码不一致

4. 修正CodeIgniter数据库配置

  • 打开application/config/database.php,确认$db['default']['hostname']设置为MySQL容器的服务名(如mysql),绝对不能用localhost或127.0.0.1——Docker容器网络中,localhost指当前解释器的容器环境,而非MySQL容器
  • 确保username、password、database参数和容器命令行测试时的配置一致

5. 验证配置有效性

  • 创建测试脚本快速验证:
<?php
$link = mysqli_connect('mysql', '你的数据库用户名', '你的数据库密码', '你的数据库名');
if (!$link) {
    die('连接失败: ' . mysqli_connect_error());
}
echo '连接成功';
mysqli_close($link);
  • 用配置好的Docker解释器运行脚本,若成功连接,再回到CodeIgniter调试即可

常见坑点

  • 禁止用localhost作为数据库主机:容器网络内服务名是跨容器通信的唯一稳定标识
  • 必须选择已运行的app容器:新建容器会脱离原有网络,导致无法解析MySQL服务名
  • 检查卷映射权限:确保本地目录权限与容器内一致,避免CodeIgniter读取错误的配置文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:01:00