php 8 启用 opcache 需完成四步闭环:确认支持(php -v 和 php -m 验证)、正确配置 php.ini(指定 zend_extension 及核心参数)、重启 php 服务(非 web 服务器)、三重验证生效(命令行、phpinfo、opcache_get_status)。

PHP 8 开启 OPcache 加速网站,关键不是“加个开关”,而是四步闭环:确认支持、正确配置、服务重启、验证生效。跳过任一环,都可能白配。
确认 OPcache 已编译支持且未被禁用
PHP 8 默认内置 OPcache,但不等于已启用。先验证基础支持:
- 终端执行 php -v,看到 with Zend OPcache 表示编译时已包含
- 运行 php -m | grep opcache,有输出说明扩展可加载;若无,需检查是否被 disable_functions 或 php.ini 中 extension_dir 路径错误拦截
- 注意:本地环境(如 XAMPP、Docker 镜像)常默认关闭,或只在 CLI 下禁用,而 Web 模式(PHP-FPM/Apache)未启用
编辑正确的 php.ini 并配置核心参数
必须修改 Web SAPI 对应的 php.ini(不是 CLI 的!可用 php --ini 和 phpinfo() 确认路径)。在文件末尾添加或取消注释以下内容:
-
zend_extension=opcache.so(Linux/macOS)或 zend_extension=php_opcache.dll(Windows)——必须用
zend_extension,不是extension - opcache.enable=1 —— Web 环境强制为 1
- opcache.memory_consumption=256 —— 单位 MB,中型项目建议 256,大型项目可设 512
-
opcache.max_accelerated_files=20000 —— 用
find /path/to/www -name "*.php" | wc -l算出实际数,再 ×1.5 填入 -
opcache.validate_timestamps=1 —— 生产环境上线前可临时设为 0,但部署后必须配合重启 FPM 或
opcache_reset() - opcache.revalidate_freq=60 —— 与上条配合,表示每 60 秒检查一次文件变更(开发环境可设为 0)
- opcache.interned_strings_buffer=16 —— 减少字符串重复内存开销,框架类多的项目明显受益
- opcache.fast_shutdown=1 —— 提升 PHP-FPM 进程退出效率
重启 PHP 服务而非 Web 服务器
OPcache 是 PHP 进程级缓存,改完 php.ini 后:
– 仅 reload Nginx/Apache 配置无效
– 必须重启 PHP 处理器本身:
- PHP-FPM:运行 sudo systemctl restart php8.0-fpm(版本号按实际替换)
- Apache + mod_php:执行 sudo systemctl restart apache2
- 宝塔/AMH 等面板:进 PHP 设置页点【重载配置】或【重启服务】
三重验证 OPcache 真正生效
别只信 phpinfo() 里有个模块名——要确认它正在工作:
- 终端再跑一遍 php -m | grep opcache,确保有输出
- 建一个
info.php放入网站根目录,内容为<?php phpinfo(); ?>,浏览器打开后搜索 “Opcode Caching”,确认状态为 Enabled - 新建
status.php,写入<?php var_dump(opcache_get_status()); ?>,返回非空数组(含opcache_enabled为 true、used_memory> 0)才算真正跑起来
配置到位后,典型网站首屏响应可提升 30%–60%,尤其对 Composer 自动加载多、框架层级深的项目效果更明显。不复杂但容易忽略细节。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











