易君召
发布于 2026-05-11 / 0 阅读
0
0

Discuz!X5安装时提示mysqli_connect() 不支持 请检查 mysqli 模块是否正确加载

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!


评论