opcache.blacklist_filename 是 php 8.6 中仍有效的 ini_system 级配置项,需在 php.ini 中设置绝对路径指向纯文本黑名单文件,支持通配符,文件须存在且可读,重启服务后生效。

opcache.blacklist_filename 是一个 INI_SYSTEM 级别的配置项,必须在 php.ini(或 /etc/php.d/ 下的独立 .ini 文件)中设置,不能在运行时(如 .htaccess、ini_set() 或脚本中)修改。
PHP 8.6 中该配置项依然有效,但注意两点:
-
它的值是文件路径,指向一个纯文本黑名单文件,每行写一个要排除缓存的 PHP 脚本路径(支持通配符
*和?),例如:/var/www/app/tests/* /var/www/app/vendor/*-dev/* /var/www/app/config/local.php
黑名单文件本身需存在且可被 PHP 进程读取(如 web server 用户
www-data或nginx可读),否则 OPcache 启动时会静默忽略并记录警告(可通过php -i | grep opcache或错误日志确认是否加载成功)。
设置方式如下(以主流 Linux 发行版为例):
-
找到你的
php.ini文件位置:php --ini
通常为
/etc/php/8.6/fpm/php.ini(FPM)或/etc/php/8.6/cli/php.ini(CLI)。 -
在
[opcache]段内添加:opcache.blacklist_filename=/etc/php/8.6/fpm/opcache.blacklist
-
创建对应黑名单文件(示例):
echo "/var/www/myapp/runtime/*" | sudo tee /etc/php/8.6/fpm/opcache.blacklist sudo chown root:www-data /etc/php/8.6/fpm/opcache.blacklist sudo chmod 644 /etc/php/8.6/fpm/opcache.blacklist
-
重启 PHP 服务生效:
sudo systemctl restart php8.6-fpm # 或 php-fpm,依实际服务名而定
⚠️ 注意:
- 若你用的是
opcache.file_cache_only=1(纯文件缓存模式),黑名单仍生效,但只影响字节码编译阶段,不阻止已缓存文件被读取。 -
opcache.blacklist_filename不支持环境变量展开(如${HOME}),必须写绝对路径。 - 配置后可用
php -r "print_r(opcache_get_configuration()['directives']['opcache.blacklist_filename']);"验证是否正确加载。
PHP 8.6 已移除 opcache.consistency_checks,但 blacklist_filename 未受影响,仍为推荐的细粒度缓存控制手段。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











