PHP 8.4.21同时安装 OPcache 和 mbstring 后出现 502

mbstring 扩展本身并不会导致 502 错误。 如果同时安装了 OPcache 和 mbstring 后出现的 502,问题几乎可以肯定是 OPcache 引起的

为什么安装了 OPcache 就会 502?

问题的根源在于 PHP 8.4.21 版本中,OPcache 扩展的 JIT(即时编译)功能与当前环境存在不兼容。这可能会导致 PHP-FPM 进程因为”段错误”而崩溃,Nginx 在无法连接到后端时就会返回 502 错误。

解决方案(二选一)

方案一:关闭 OPcache 的 JIT 功能(推荐,保留基础缓存)

这个方法可以保留 OPcache 的脚本缓存加速能力,同时解决 502 错误。

  1. 定位配置文件
    在宝塔面板的 软件商店 -> PHP 8.4 设置 -> 配置文件 中修改。

  2. 修改参数
    在配置文件中找到 opcache.jit_buffer_size 这一行,将其值改为 0。如果找不到这行,可以手动添加。

修改前

1
opcache.jit_buffer_size=128m

修改后

1
opcache.jit_buffer_size=0

这个修改会关闭 JIT 功能,但 OPcache 的字节码缓存功能依然生效,对绝大多数网站的性能影响很小。

最后重启 PHP

方案二:暂时卸载 OPcache 扩展

如果修改 JIT 配置后问题依旧,或者想彻底排查,可以直接卸载 OPcache 扩展。

  1. 在宝塔面板的 PHP 8.4 设置中,切换到 安装扩展 标签页。

  2. 找到 opcache,点击 卸载

  3. 卸载后网站会立即恢复正常。