Table of Contents
问题背景
在日常的网站运维中OPcache 是公认的 WordPress 提速神器,它通过将预编译的脚本字节码存储在内存中避免了 PHP 每次请求时重新加载和解析脚本,从而大幅提升站点响应速度,降低服务器 CPU 开销。
然而,近期有不少站长在宝塔面板中将环境升级到 PHP 8.4.21 并安装 OPcache 扩展后网站直接崩溃并提示 502 Bad Gateway,目前宝塔官方尚未释出针对该版本的修复更新导致许多注重性能的站长陷入了两难境地:
- 不装扩展:WordPress“站点健康”会强迫症式地提示“未启用操作码缓存”;
- 安装扩展:网站又直接瘫痪。
经过排查,该问题主要是由于 PHP 8.4 下 OPcache 的 JIT(即时编译) 机制兼容性引起的。今天Exakit 极客资源站(原盲盒博客)就为大家分享一个简单、快速的临时解决方案。
解决方法
既然是 JIT 引起的兼容性冲突,我们只需要在保留 OPcache 基本缓存功能的同时,暂时关闭 JIT 缓冲区即可。具体操作步骤如下:
1.登录宝塔面板后台,进入 软件商店。
2.找到已安装的 PHP 8.4,点击「设置」。
3.在弹出的窗口中选择 配置文件(php.ini)。
4.使用 Ctrl + F 快捷键查找以下配置项:
opcache.jit_buffer_size=128m
将其修改为:
opcache.jit_buffer_size=0
5.保存配置文件,并切换到「服务」选项卡,重启 PHP 服务即可。
注意事项
关闭 JIT 有什么影响吗?
关闭 JIT 缓冲区后,PHP 的基础操作码缓存(OPcache)依然在正常工作,WordPress 的“站点健康”警告也会消失。JIT 主要针对密集型计算有显著提升,关闭它通常只对极高访问量或高并发的复杂架构网站有轻微性能影响,对于绝大多数常规 WordPress 站点来说体感上几乎没有区别。
延伸避坑:PHP 8.4 暂不支持 mbstring 扩展
除了 OPcache 的 502 报错外,目前宝塔面板下的 PHP 8.4.21 还存在无法正常安装 mbstring 扩展的问题。如果您的 WordPress 主题使用了 mb_strimwidth() 等经典文字截断函数,在没有 mbstring 扩展的支持下,网站前台或后台可能会直接触发 Fatal Error(致命错误)。
评论(0)