Windows环境Apache服务器部署Symfony项目出现缓存文件重命名错误
解决方案
该错误是Windows特有的文件锁机制与Symfony开发环境自动热更新缓存的兼容性问题:开发环境下Symfony会检测路由等配置变更自动重建缓存,Windows对文件锁的限制远严格于Linux系统,多个Apache并发请求同时尝试写入同一个缓存文件时,就会出现临时文件重命名失败的报错,该问题仅出现在本地开发场景,正常配置的生产环境不会触发。
方法1:关闭开发环境路由缓存自动生成(最推荐)
编辑
config/packages/dev/framework.yaml文件,添加如下配置禁用路由缓存:framework: router: cache_dir: false配置生效后开发环境会跳过路由缓存预生成步骤,每次请求直接解析路由,仅会小幅降低单请求响应速度,可完全规避缓存写入冲突问题,适合绝大多数本地开发场景。
方法2:修改Apache并发配置
打开XAMPP面板点击Apache的「Config」按钮选择
httpd.conf,找到mpm_winnt_module配置段,调整为单线程运行模式:<IfModule mpm_winnt_module> ThreadsPerChild 1 MaxConnectionsPerChild 0 </IfModule>修改后重启Apache,同一时间仅会处理一个请求,不会出现并发写入缓存的冲突。
方法3:修复缓存目录权限
右键点击项目根目录下的
var文件夹,依次选择「属性」-「安全」-「编辑」,给Apache运行用户(默认是SYSTEM或者Everyone)添加「完全控制」权限,操作完成后执行php bin/console cache:clear清空缓存即可。
内容的提问来源于stack exchange,提问作者Sheaxer
相关产品推荐
相关产品推荐

