Opcache预加载配置后缺失App_KernelProdContainer.preload.php问题求助
你可以先将opcache.preload配置的路径修改为实际存在的srcApp_KernelProdContainer.preload.php,这个文件名前缀的差异是Symfony版本迭代带来的默认调整,5.1及以上版本的部分部署环境会默认生成带src前缀的预加载文件。
除此之外你还需要检查以下配置是否正确:
- 确认项目运行在生产环境,预加载文件仅会在prod模式下生成,你删除缓存目录后不能仅重启PHP-FPM,需要手动执行生产环境缓存预热命令:
命令执行完成后再核对php bin/console cache:clear --env=prod --no-debugvar/cache/prod目录下的预加载文件是否正常生成。 - 检查
var/cache目录的权限,所属用户和用户组需要和你配置的opcache.preload_user=www-data完全一致,否则缓存写入会因为权限不足失败,导致预加载文件缺失。 - 核对
config/packages/framework.yaml中的preload配置项,如果你手动修改过该配置的路径或命名规则,也会导致生成的预加载文件和官方默认路径不符。 - 配置修改完成后重启PHP-FPM前,可以执行
php -i | grep opcache.preload验证配置是否生效,确认输出的路径和实际文件路径完全匹配即可。
内容的提问来源于stack exchange,提问作者Khribi Wessim
相关产品推荐
相关产品推荐

