PHP 8.6 中启用 OPcache 文件缓存需先确保 OPcache 已启用(opcache.enable=1),再根据需求配置 file_cache(磁盘后备)或 file_cache_only=1(纯磁盘模式),并同步设置 memory_consumption、max_accelerated_files 等核心参数。

PHP 8.6 中启用 OPcache 的 file_cache(文件缓存模式)需明确区分两种用途:一种是作为内存缓存的后备存储(opcache.file_cache),另一种是完全禁用内存、仅用磁盘缓存(opcache.file_cache_only = 1)。两者配置逻辑不同,但都依赖于正确启用 OPcache 本身。
确认 OPcache 已加载并启用
file_cache 不是独立扩展,而是 OPcache 的子功能。必须先确保 OPcache 正常工作:
- 在
phpinfo()页面中搜索 “OPcache”,确认 “Opcode Caching” 显示为 Enabled - 检查
Loaded Configuration File路径是否为你实际编辑的php.ini - CLI 和 Web(如 php-fpm)可能使用不同配置,需分别验证
启用 file_cache(磁盘后备缓存)
这是默认推荐方式:内存为主,磁盘为辅。适用于重启后快速恢复缓存,或内存紧张时自动落盘。
PHP 8.5.12 RC 1 候选版修复 BZ2、DOM、PDO、Opcache/JIT 和扩展内存安全问题,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 设置缓存目录路径:
opcache.file_cache="/path/to/your/.opcache"(目录需存在且 PHP 进程有读写权限) - 保持
opcache.file_cache_only=0(默认值,无需显式写) - 可选但建议:启用 CLI 缓存支持,便于部署脚本调用
opcache_reset():opcache.enable_cli=1
启用 file_cache_only(纯文件缓存模式)
该模式下 OPcache 完全不使用共享内存,所有字节码均以时间戳命名的子目录形式写入磁盘。适合无共享内存权限的环境(如某些共享主机),但性能略低于内存模式。
立即学习“PHP免费学习笔记(深入)”;
- 必须同时设置:
opcache.file_cache_only=1和opcache.file_cache="/path/to/your/.opcache" - 注意:每次脚本变更或服务重启都会生成新时间戳目录(如
20260824143210),旧目录不会自动删除 - 务必配合定时清理脚本,避免 inode 耗尽(可用
find /path/to/.opcache -mindepth 1 -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;)
关键参数需同步配置
仅设 file_cache 相关项不足以让缓存生效,以下基础参数缺一不可:
-
opcache.enable=1(全局开关) -
opcache.memory_consumption=256(即使用 file_cache_only,该值也影响内部结构大小) -
opcache.max_accelerated_files=32531(建议用质数,覆盖项目全部 PHP 文件) -
opcache.validate_timestamps=0(生产环境关闭时间戳校验,提升性能;部署后手动重置)


















