xampp 8.2.6中opcache默认未启用,90%不生效因改错php.ini文件、windows下未用带引号的绝对路径加载php_opcache.dll、或未完整重启apache;须通过phpinfo()确认loaded configuration file路径,启用opcache.enable=1等参数并设max_accelerated_files=19997(质数),开发环境必须开validate_timestamps=1。

XAMPP 8.2.6 自带 PHP 8.2,但 OPcache 默认未启用——改完 php.ini 不生效,90% 是因为没改对文件、路径写错或没重启 Apache。
确认你编辑的是 Apache 加载的 php.ini
XAMPP 有两套 PHP 配置:CLI(命令行)和 Web(Apache 模块)。php -m | grep opcache 看的是 CLI 的,而网站跑的是 Apache SAPI,它读的是另一份 php.ini。
- 在浏览器访问
http://localhost/dashboard/phpinfo.php,搜索 “Loaded Configuration File”,记下完整路径(通常是C:\xampp\php\php.ini) - 用记事本或 VS Code 打开这个文件,别用系统默认的“记事本”——它可能乱码,导致配置失效
- 搜索
opcache,如果整段被注释掉(前面有分号;),就说明没启用
Windows 下必须用绝对路径加载 opcache.dll
XAMPP 默认的 php.ini 里常写 zend_extension=php_opcache.dll,但 PHP 在 Windows 下找不到这个相对路径,会静默失败。
- 找到你 XAMPP 安装目录下的
php\ext\php_opcache.dll文件(例如C:\xampp\php\ext\php_opcache.dll) - 在
php.ini中找到或新增这一行:zend_extension="C:\xampp\php\ext\php_opcache.dll"(注意加英文双引号) - 确保不是
extension=php_opcache.dll或zend_extension=opcache—— 这两种写法都无效
关键参数必须调大,否则 ThinkPHP/Laravel 项目几秒就崩
PHP 8.2 默认的 opcache.max_accelerated_files=2000 对 Composer vendor + 多命名空间项目完全不够,缓存频繁驱逐,vendor/autoload.php 找不到、类加载失败、报 Class not found 错误都是它惹的祸。
- 在
php.ini的[opcache]区块下,确保有以下配置: opcache.enable=1opcache.memory_consumption=256-
opcache.max_accelerated_files=19997(必须是质数,不能写 20000) -
opcache.validate_timestamps=1(开发环境必须开,否则改代码不生效) -
opcache.revalidate_freq=2(每 2 秒检查一次文件变更)
改完必须完整重启 Apache,只刷新页面没用
OPcache 是进程级扩展,配置变更后必须让 Apache 释放所有 PHP 工作进程并重新加载模块。
- 打开 XAMPP Control Panel,点击
Apache行右侧的Stop,等状态变灰后再点Start - 别信“Restart”按钮——XAMPP 的 Restart 有时只 reload 配置,不真正重启进程
- 重启后再次访问
phpinfo.php,搜索 “Opcode Caching”,确认状态是Enabled,且opcache.enable显示On - 还可以在浏览器直接访问
http://localhost/dashboard/opcache-status.php(XAMPP 自带),看缓存命中率是否稳定在 95%+,wasted_memory是否长期低于 5%
最容易被忽略的一点:XAMPP 8.2.6 的 php.ini 里可能同时存在两处 zend_extension 配置——一处在文件开头附近(被注释),一处在末尾的 [opcache] 区块。务必只保留一处、且是带绝对路径的那行,否则 PHP 启动时会因重复加载扩展而崩溃。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











