PHP 8.5.5 运行慢主因是 OPcache 未启用、Xdebug 悄悄开启、realpath 缓存过小;需确认 Web/CLI 双环境 OPcache 启用,禁用 Xdebug,调大 realpath_cache_size 和 opcache.memory_consumption,慎用 JIT。

确认 OPcache 是否真启用(Web 和 CLI 都要查)
很多人改了 php.ini 以为就生效了,结果只开了 CLI 的 OPcache,Web 请求仍走 FPM 或 Apache 模块,用的是另一份配置。
- 建一个
info.php文件,内容为<?php phpinfo(); ?>,用浏览器访问,重点看 “Loaded Configuration File” 路径,确保你改的就是这个文件 - 搜索 “Opcode Caching”,必须显示
Enabled,且opcache.enable值为On - 同时在终端执行
php -i | grep opcache.enable_cli,CLI 场景下也要开(尤其跑composer或phpunit时),值应为On - 别信
php -m | grep opcache—— 加载了不等于启用了
关掉 Xdebug(哪怕你没在调试)
Xdebug 在 xdebug.mode=develop 下会全程扫描所有函数调用和变量,Web 请求延迟翻倍是常态,CLI 下更明显 —— php -v 卡顿几秒就是它干的。
- 运行
php -i | grep 'xdebug.mode',如果输出是develop或debug,develop,立刻改 - 把
php.ini里xdebug.mode设为off(开发时再临时切debug) - 确认
xdebug.start_with_request=trigger已设置(Xdebug 3.1+ 必须项),否则它默认每个请求都启动 - 注释掉
zend_extension=xdebug.dll(Windows)或zend_extension=xdebug.so(Linux),彻底卸载比“关模式”更干净
调大 realpath_cache_size 和 opcache.memory_consumption
Composer 包多、框架类库深的项目,realpath_cache_size=4096(默认值)很快打满,导致每次 require 都要 stat() 文件系统;opcache.memory_consumption 太小则频繁淘汰缓存,命中率虚高但 miss 持续上涨。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 在
php.ini中设:realpath_cache_size=40960(40KB)、realpath_cache_ttl=3600 -
opcache.memory_consumption=256是 PHP 8.5.5 的安全起步值;Laravel/Symfony 类项目建议直接设512 - 别设
opcache.validate_timestamps=0在开发环境 —— 改完代码要等 60 秒才生效,容易误判逻辑错误 - 加一行
opcache.revalidate_freq=60,平衡热更新与性能
PHP 8.5.5 特有的 JIT 配置慎用
JIT 在数值密集型场景(如图像处理、加密计算)有收益,但对常规 Web 请求(ORM、HTTP 客户端、模板渲染)基本没提升,反而增加启动开销和内存占用。
立即学习“PHP免费学习笔记(深入)”;
- 除非你明确压测过并确认 JIT 带来正向收益,否则不要开
opcache.jit - 若真要试,必须配
opcache.jit_buffer_size=256M,且opcache.jit=1255(不是on) - JIT 一旦开启,
opcache_get_status()里的jit字段才会显示enabled,仅靠php -v看不到 - 注意:JIT 和 OPcache 共享内存池,
opcache.memory_consumption要预留足够空间
pm.max_children 或换 FPM 模式影响更大。


















