PHP 8.6 默认内置并启用OPcache,需验证生效、配置关键参数(如opcache.enable=1、memory_consumption=256、validate_timestamps=0)并重启服务,方可显著降低编译开销、提升响应速度。

PHP 8.6 默认已内置 OPcache,无需额外安装,关键在于正确配置和启用。合理设置后,可显著降低脚本重复编译开销,减少 CPU 占用,提升页面响应速度——尤其对 WordPress、Laravel 等框架类项目效果明显。
确认OPcache已加载并启用
在 PHP 8.6 中,OPcache 默认开启,但仍需验证是否实际生效:
- 创建一个
info.php文件,内容为<?php phpinfo(); ?>,通过浏览器访问,搜索 “opcache” 查看模块是否列出且状态为 enabled; - 或执行命令行:
php -m | grep opcache,有输出即表示扩展已加载; - 进一步检查运行时状态:
php -r "var_dump(opcache_get_status()['opcache_enabled']);",返回true表示已启用。
核心php.ini配置项(推荐值)
编辑 PHP 主配置文件(如 /etc/php/8.6/fpm/php.ini 或 /usr/local/etc/php/8.6/php.ini),在末尾添加或修改以下参数:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- opcache.enable=1 —— Web 请求中启用 OPcache;
- opcache.enable_cli=1 —— CLI 模式也启用(利于 Artisan 命令、Composer 脚本等提速);
- opcache.memory_consumption=256 —— 分配 256MB 共享内存(中小项目建议 128–256,大项目可设为 512);
- opcache.max_accelerated_files=20000 —— 支持缓存最多 2 万个脚本(根据项目文件数调整,过小会频繁踢出旧缓存);
- opcache.validate_timestamps=0 —— 禁用文件变更检测(生产环境必须关闭,否则失去缓存意义);
- opcache.revalidate_freq=0 —— 配合上一项,表示永不自动重校验;
- opcache.fast_shutdown=1 —— 加速脚本终止过程,释放资源更高效;
- opcache.preload=/path/to/preload.php —— 可选:启用预加载,提前编译常用类(如框架核心),进一步减少首次请求延迟。
重启服务与验证缓存使用
修改配置后需重启对应服务才能生效:
立即学习“PHP免费学习笔记(深入)”;
- FPM 模式:
sudo systemctl restart php8.6-fpm; - Apache mod_php 模式:
sudo systemctl restart apache2; - 验证缓存是否写入:运行
php -r "print_r(opcache_get_status()['memory_usage']);",观察used_memory是否随请求增长; - 检查命中率:
php -r "\$s = opcache_get_status(); echo 'Hit rate: ', round(\$s['opcache_statistics']['hit_rate'], 2), '%\n';",稳定在 95%+ 为佳。
生产环境注意事项
避免常见误操作导致缓存失效或不生效:
- 确保 Web 和 CLI 的 php.ini 都配置了
opcache.enable_cli=1,否则部署脚本(如 Composer install)无法受益; - 禁用
opcache.validate_timestamps后,代码更新必须手动重载 OPcache(opcache_reset())或重启 PHP 进程; - 若使用 Docker,确保 php.ini 修改挂载到容器内,并检查容器中实际生效的配置路径(可用
php --ini确认); - WordPress 等 CMS 若启用了“开发模式”插件或调试常量(如
WP_DEBUG),可能干扰缓存行为,上线前应关闭。


















