DiscuzQ要求PHP 7.3.0+且exec、shell_exec、proc_open、passthru不可禁用,需确认CLI与Web端PHP版本一致、开放禁用函数、启用fileinfo/opcache/redis扩展,并确保storage/runtime可写及上传限制达标。

DiscuzQ 必须运行在 PHP 7.3+(最低 7.3.0),且 exec、shell_exec、proc_open、passthru 这四个函数不能被禁用——宝塔默认会禁掉前三个,这是安装失败或后台任务静默失败的最常见原因。
确认 PHP 版本是否真为 7.3 及以上
宝塔面板里显示“PHP-7.3”不等于实际运行版本。常见陷阱是:站点绑定的是旧版本 PHP,或 CLI 使用的不是面板所装版本。
- 进宝塔 → 网站 → 对应站点 → “PHP 版本”下拉框确认已选
7.3或更高(如7.4、8.0) - SSH 登录后执行:
php -v,必须输出类似PHP 7.3.33;若显示5.6或7.2,说明系统 CLI 默认 PHP 不匹配,需执行ln -sf /www/server/php/73/bin/php /usr/bin/php(路径按你实际安装版本调整,如/74/) - 在 DiscuzQ 的
public/index.php顶部临时加一行:<?php die(phpversion()); ?>,浏览器访问首页,看输出是否符合预期
开放 DiscuzQ 强依赖的底层函数
DiscuzQ 启动队列、生成静态页、调用 FFmpeg 转码等全部依赖 exec 类函数。宝塔在 PHP 配置中默认通过 disable_functions 屏蔽它们。
- 进宝塔 → 软件商店 → 找到已安装的 PHP 版本(如 PHP-7.3)→ 设置 → 配置修改
- 搜索
disable_functions行,删掉其中的:exec,shell_exec,proc_open,passthru(保留其他函数,如system、symlink可不动) - 保存后务必点“重载配置”,再重启 PHP(不是重启网站)
- 验证是否生效:新建
info.php放入网站根目录,内容为<?php print_r(ini_get('disable_functions')); ?>,访问该文件,确认输出中不再包含那四个函数
补充关键扩展与权限设置
仅开函数还不够。DiscuzQ 还强依赖 fileinfo、opcache(非必须但强烈建议)、redis(用于队列和缓存),且 storage 和 runtime 目录必须可写。
立即学习“PHP免费学习笔记(深入)”;
- 进宝塔 → PHP 设置 → 安装扩展 → 勾选并安装:
fileinfo、opcache、redis(若用 Redis 作缓存/队列) - 确保
opcache.enable=1且opcache.enable_cli=1(后者常被忽略,影响 Artisan 命令执行) - SSH 中执行:
chown -R www:www /www/wwwroot/你的站点目录/storage /www/wwwroot/你的站点目录/runtime - 检查
php.ini中upload_max_filesize≥20M、post_max_size≥25M,否则附件上传直接 500
DiscuzQ 的“严苛”不在配置多,而在几个点卡得极死:PHP 小版本号必须 ≥7.3.0、四个函数一个都不能少、fileinfo 扩展必须启用、CLI 的 opcache 必须打开。漏掉任意一项,都可能表现为首页空白、后台无法提交表单、队列不消费、安装卡在“正在初始化数据库”——而错误日志里往往只报 Class not found 或静默超时,根本不会提示函数被禁。



















