我尝试按照以下步骤部署symfony项目:
./composer.phar update
php bin/console cache:clear
我也尝试过手动安装运行ArrayCache的教义驱动程序:
./composer.phar require doctrine/cache
结果总是相同的,我以以下错误结束:
# ./composer.phar update --no-interaction
[...]
Script cache:clear returned with error code 255
!!
!! In ContainerBuilder.php line 1089:
!!
!! Class Doctrine\Common\Cache\ArrayCache does not exist
!!
!!
!!
Script @auto-scripts was called via post-update-cmd
我是symfony的新手,我不明白为什么这门课不见了。
我正在使用以下版本:
"symfony/framework-bundle": "5.1.*",
"doctrine/doctrine-bundle": "^2.2",
提前感谢您的帮助。
4条答案
按热度按时间mkh04yzy1#
我想你在安装
"doctrine/doctrine-bundle": "^2.2",
的时候安装了doctrine/cache
2.x版本。从github page开始:
This library is deprecated and will no longer receive bug fixes from the Doctrine Project. Please use a different cache library, preferably PSR-6 or PSR-16 instead.
因此,您有以下选项:
nbysray52#
过了一些时候,我发现了一个更好的解决办法:
然后在PHP:
我现在可以把条令升级到最新版本了。
这是另一个答案,但是由于文档太差(对于非Symfony用户),添加几行php可以使所有的区别!希望这能帮助一些人。如果由于某种原因这不是最好的解决方案,我很想听到。
对我来说,解决办法是降级到教义2.7.4。
Google已经在搜索了,很明显Doctrine的文档还没有整理好。我会在我的待办事项列表中寻找另一个(第三方)缓存解决方案来代替ArrayCache。我应该早点这样做,因为ArrayCache不适合生产。希望Doctrine能尽快更新文档!
如果我找到一个替代品,我会把它贴在这里。或者也许有人比我早一步,我希望如此!
sulc1iza3#
我认为在其他答案中已经确定,在某个地方,您正在示例化来自doctrine/cache包的
ArrayCache
的示例。如果你想要doctrine/cache2.x(其中
ArrayCache
已经被删除)的等效功能,你可以做doctrine/dbal本身会做的事情。也就是说,与其这样...
...您也可以这样做(假设您对symfony/cache包的介绍感到满意)...
当
ArrayCache
不存在并且您没有在dev-mode中指定缓存时,Doctrine本身就是这样做的。您可以看到Doctrine决定在\Doctrine\ORM\Tools\Setup::createCacheInstance
示例化缓存的逻辑。hfyxw5xn4#
为了解决这个问题,我首先删除composer.lock文件,之后,我使用以下命令安装composer:composer install我使用以下命令安装了symfony缓存依赖项:编写器需要symfony/缓存