Symfony2 - 尝试写入 pro_ 时混淆缓存清除

2024-03-05

我的 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 来尝试修复它。该问题是由我们的缓存路径包含“\”字符引起的,这些字符随后在缓存文件中转义,并且无法匹配旨在清理它们的搜索/替换命令。


app/console cache:clear --env=prod --no-warmup
composer dump-autoload -o
app/console cache:warmup --env=prod
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2 - 尝试写入 pro_ 时混淆缓存清除 的相关文章

随机推荐