Discuz! 检测到 PHP 没有加载 mysqli 扩展。我们现在快速安装这个扩展,使用 Docker 官方提供的 docker-php-ext-install 工具,它会自动处理依赖。
一、快速安装 mysqli 和 pdo_mysql 扩展
1. 进入 PHP 容器
bash运行
cd /opt/discuz-x5
sudo docker exec -it discuz-php sh
2. 安装依赖并启用扩展(在容器内执行)
bash运行
# 1. 更新包索引
apk update
# 2. 安装编译依赖(只安装最核心的)
apk add --no-cache autoconf g++ make
# 3. 安装 mysqli 和 pdo_mysql 扩展(Docker 官方工具,自动处理)
docker-php-ext-install -j$(nproc) mysqli pdo_mysql
# 4. 退出容器
exit
3. 重启 PHP 容器
bash运行
cd /opt/discuz-x5
sudo docker compose restart php
4. 等待 30 秒后验证扩展是否加载
bash运行
# 创建一个测试文件查看已加载的扩展
echo "<?php phpinfo(); ?>" | sudo tee www/phpinfo.php
sudo chown 82:82 www/phpinfo.php
访问 http://192.168.2.112/phpinfo.php,在页面中搜索 mysqli,如果能看到就说明加载成功了!
二、如果方案一失败:使用 Alpine 预编译扩展(ARM 优化)
如果上面的编译还是失败,我们直接用 Alpine 包管理器安装预编译好的 ARM64 扩展:
1. 修改 docker-compose.yml 中的 PHP 服务
将 PHP 部分替换为:
yaml
php:
# 使用 Alpine 官方 PHP 镜像(带包管理器支持)
image: php:8.3-fpm-alpine
container_name: discuz-php
volumes:
- ./www:/var/www/html
networks:
- discuz-net
restart: always
environment:
TZ: Asia/Shanghai
# 使用 Alpine 包管理器安装预编译扩展
command: >
sh -c "
apk add --no-cache php83-mysqli php83-pdo_mysql php83-gd php83-curl php83-mbstring php83-zip &&
php-fpm
"
2. 重新启动 PHP 容器
bash运行
cd /opt/discuz-x5
sudo docker compose up -d --force-recreate php
三、验证修复并继续安装 Discuz!
1. 刷新 Discuz! 安装页面
回到浏览器,刷新 http://192.168.2.112/install/,现在 mysqli_connect() 应该显示 “支持” 了。
2. 继续安装
点击 “下一步”,继续完成 Discuz! 的安装:
数据库服务器:
mysql数据库名:
discuz_db数据库用户名:
discuz_user数据库密码:
DiscuzUser2026!