1Panel建站笔记

最近将服务器从宝塔迁移到1Panel管理,实现容器化无侵入服务器管理,便于后续数据迁移和持续维护。
在这个过程中遇到了一系列问题,在这个笔记中跟进问题踩坑日志。

docker php容器中部署的Typecho框架博客网站连接mysql容器失败的问题

问题根因

在docker容器中缺少连接mysql的必要扩展,在Typecho源码使用的Mysql驱动连接数据库,但是1Panel未提供该扩展,故安装并启用1Panel提供的Pdo_Mysql扩展作为驱动连接MySQL。

解决方法

  1. 如图,创建php容器时添加mysqli和pdo_mysql扩展
    iCopy_2026_04_30_01_24_16.png
  2. 如图,在博客网站根目录下修改config.inc.php文件,将驱动换成pdo_mysql
    Snipaste_2026-04-30_01-28-19.png

关键排查路径

  • config.inc.php中根据容器B名称连接数据库,访问网站显示数据库连接失败
  • 进入php容器(容器A)终端,能ping通mysql容器(容器B)的ip和容器名(会被映射成ip)
  • 在外网能mysql连接容器B
  • 切换php 6,7,8版本尝试,问题未解决
  • 在创建php容器时添加mysqli扩展,并进入php容器,使用以下指令调试MySQL连通性,发现可以正常联通:
php -r "
\$conn = mysqli_connect('容器b名称', 'root', 'MySQL密码', 'mysql', 3306);
if (!\$conn) echo 'Error: ' . mysqli_connect_error();
else echo 'OK';
"
  • 于是我把问题定位到网站MySQL连接串代码上,在config.inc.php文件的<?php下面一行添加下列代码打印报错信息
define('__TYPECHO_DEBUG__', true);
error_reporting(E_ALL);
ini_set('display_errors', 1);

Typecho_Db::set($db);上一行添加下列代码显示连接串信息

var_dump($db);
exit;
  • 根据报错信息发现根因,容器缺少mysql连接驱动扩展,于是我根据解决方案中的方法安装并应用Pdo_Mysql扩展后问题解决。
最后修改:2026 年 04 月 30 日
如果觉得我的文章对你有用,请随意赞赏