我的 Symfony 安装似乎在某个地方变得混乱(可能是在缓存清除失败期间)。似乎认为应该调用生产缓存文件夹pro_
代替prod
.
首先,当我尝试跑步时$ php console cache:clear --env=prod
我收到错误消息:
[Symfony\Component\Filesystem\Exception\IOException]
Cannot rename "...cache/pro_" to "...cache/pro_".
我在 Windows 开发机器上运行(因此不存在文件系统权限问题)。
所以,我尝试删除所有cache/*
手动更改文件/文件夹并重试。这次缓存:清除通过并产生了一个prod
文件夹。该文件夹包含注释、资产、学说、会话和树枝的子文件夹。
但是当我打开产品前端控制器时(例如http://devsite/
在浏览器中)它失败并显示消息:
Fatal error: require() [function.require]:
Failed opening required '...cache/pro_/doctrine/orm/Proxies\__CG__AcmeDemoBundleEntityFoo.php'
(include_path='blah, blah, blah')
in ...\vendor\doctrine\common\lib\Doctrine\Common\Proxy\AbstractProxyFactory.php on line 165
从表面上看,它试图访问 pro_ 而不是 prod 中的缓存文件(再次)。
查看缓存文件夹我可以看到__CG__AcmeDemoBundleEntityFoo.php
存在于 cache\prod 下,但现在有一个 pro_ 文件夹,其中包含注释和会话子文件夹。
发生了什么事以及如何让 Symfony 忘记pro_
这样它就可以返回使用prod
为了一切?
我认为与缓存有关的所有内容都存储在缓存文件夹下...是否还有其他东西(某处)存储了对pro_
?或者我在错误的地方寻找这个问题的解决方案?
Edit:做了更多搜索并appProdProjectContainer.php
包含 16 条参考文献.../cache/pro_
。如果我手动搜索并将它们替换为.../cache/prod
该网站有效。但下次我跑步的时候console cache:clear
它将它们重置回pro_
。这种错误的行为从何而来?
Edit2:好的,我已经深入了解了这个问题,并向 Symfony 核心提交了一个 PR 来尝试修复它。该问题是由我们的缓存路径包含“\”字符引起的,这些字符随后在缓存文件中转义,并且无法匹配旨在清理它们的搜索/替换命令。