phpEnv非主流且无官方Discuz! X3.5支持,安装需重点确认PHP版本≥7.4、启用mbstring/gd/xml/dom扩展、opcache开启、upload_max_filesize≥8M、MySQL字符集全设为utf8mb4,并严格校验Web服务器配置与目录权限。

phpEnv 不是主流 PHP 环境管理工具,也没有官方 Discuz! X3.5 支持记录。你在搜索“phpEnv 安装 Discuz X3.5”时,大概率会踩进两个坑:一是把 phpEnv 和 phpenv(Ruby 社区的 PHP 版本管理器)混淆;二是误入某些非官方打包的、已多年未更新的 Windows 一键包(如旧版 phpEnv for Windows),它们默认 PHP 版本多为 5.6 或 7.0,而 Discuz! X3.5 实际运行时对 mbstring、xml、opcache 等扩展有隐式强依赖,且在 PHP 7.4+ 下才稳定。
如果你手头真有一个叫 phpEnv 的本地环境(比如某国产集成包改名),请先确认它底层用的是 Apache 还是 Nginx、PHP 是否启用 FPM、以及 MySQL 是内置还是外连——这些直接决定后续能否走通安装流程。
Discuz! X3.5 要求的 PHP 扩展和配置项必须手动核验
Discuz! X3.5 的安装检测页(/install/index.php)只报错不提示修复路径,很多“下一步”卡住,其实是 php.ini 里几个关键项没开:
-
extension=mbstring必须启用,否则中文用户名、帖子内容乱码或报 500 -
extension=gd必须启用,否则验证码无法生成,安装直接中断 -
extension=xml和extension=dom必须同时启用,UCenter 通信依赖 DOMDocument 类 -
opcache.enable=1建议开启,否则后台打开慢、模板编译频繁失败 -
upload_max_filesize和post_max_size均需 ≥ 8M,否则附件上传失败
改完 php.ini 后,务必重启 Web 服务(不是仅 reload),否则扩展不加载。
立即学习“PHP免费学习笔记(深入)”;
MySQL 字符集必须设为 utf8mb4,不能只靠建库语句
Discuz! X3.5 的 config/config_ucenter.php 和主站 config/config_global.php 都硬编码了 utf8mb4,但很多 Windows 一键包里的 MySQL 默认字符集仍是 latin1 或 utf8(注意:MySQL 的 utf8 实际是 utf8mb3,不支持 emoji)。
光在安装时执行 CREATE DATABASE discuz DEFAULT CHARACTER SET utf8mb4 不够,你还得确保:
- MySQL 配置文件(如
my.ini或my.cnf)中[client]、[mysql]、[mysqld]三节都明确写了default-character-set = utf8mb4和collation-server = utf8mb4_unicode_ci - 重启 MySQL 服务后,执行
mysql -e "SHOW VARIABLES LIKE 'character%';",所有相关项都应返回utf8mb4 - 连接 Discuz! 的数据库用户,需要在
GRANT时显式指定CHARACTER SET utf8mb4(部分旧版客户端驱动会忽略库级设置)
Windows 下 phpEnv 类环境常见权限与路径陷阱
这类环境通常把网站根目录设在 C:\phpEnv\www\ 或类似路径,但 Discuz! X3.5 的安装逻辑默认信任 ./ 相对路径,容易出问题:
- 解压后必须把
upload/目录下**全部文件**(含.htaccess、config/、data/)移到网站根目录,不能保留upload文件夹层级,否则install/index.php找不到config/config_global.php -
data/和uc_server/data/目录需赋予 IIS_IUSRS(IIS)或 Users(Apache)写权限,否则安装中途报“无法写入配置文件” - 如果用的是 Apache,确认
httpd.conf中启用了mod_rewrite,且AllowOverride All已配到对应<directory></directory>块,否则伪静态失效,后台菜单打不开 - 浏览器访问地址必须带
/install/(如http://localhost/install/),不能只输http://localhost/——后者会跳转到首页并提示“未安装”
Discuz! X3.5 的安装过程看着简单,但它的错误反馈极度滞后,往往第 5 步报错,根源其实在第 1 步的 php.ini 配置或 MySQL 字符集上。别信“一键完成”,每个环节都要自己 php -m | grep -E "(mbstring|gd|xml)"、mysql -e "SHOW VARIABLES LIKE 'char%'" 过一遍。



















