Symfony2更新bootstrap.php.cache

最近我从Symfony.com上的BETA版本开始了Symfony2的一个项目

过了一段时间,我需要升级到master分支,所以我从github中获取最新的信息,并将其切换到vendor / symfony。

但是,我的bootstrap.php.cache和bootstrap_cache.php.cache没有升级,这已经产生了错误。

我尝试清除symfonycaching,无济于事。

我如何更新这些文件以符合我的项目?

在2.0版本中,原始文件在这里:

./vendor/bundles/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php 

编辑:在2.3版本的文件在这里

 vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php 

如果您运行composer update命令,您也将更新您的项目依赖关系,这不是所需的行为。 如果你这样做,你将不得不testing新的变化,看看他们是否确实影响你的应用程序。

所以如果你只是想重build你的引导caching文件,那么我build议你运行post-update-cmd命令。

所以你应该使用:

 composer run-script post-update-cmd 

在我的情况下执行以下脚本(请参阅composer.json ):

 "scripts": { "post-install-cmd": [ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", "Mopa\\Bundle\\BootstrapBundle\\Composer\\ScriptHandler::postInstallSymlinkTwitterBootstrapSass" ] } 

请考虑您也可以在那里创build一组新的脚本,以重build引导文件并清除caching而不安装资产等等:

 "scripts": { "reset-bootstrap-cmd": [ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache" ] } 

然后… composer run-script reset-bootstrap-cmd

在最新的2.1.0-DEV中,实际的脚本在这里:

./vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php

我正在使用Symfony标准2.0.9(没有供应商)。

要更新bootstrap.php.cache ,只需运行

php bin/vendors update

这将更新所有供应商(包括Symfony本身),并始终为您调用build_bootstrap.php脚本。

你尝试过运行:

 php bin/build_bootstrap.php 

这将重新生成引导文件

您可能更喜欢使用composer install来将系统“重新安装”到composer.lock文件中定义的状态,并生成autoloads和bootstrap.php.cache。 使用composer update更新所有软件包并更改您的系统的状态。

我觉得build_bootstrap脚本总是改变位置:)

所以,如果你正在使用几个Symfony版本,并且不知道build_bootstrap在哪里,那么这个技巧就可以实现(只有Linux / Mac):

 $ cd vendor/ $ find . -name build_bootstrap.php 

我不能修复引导caching中的问题,也不能更新它。 我得到了很多这个

[Symfony \ Component \ Debug \ Exception \ ContextErrorException]警告:在/home/sites/fuji/app/bootstrap.php.cache中为foreach()提供的参数无效2870行

处理post-update-cmd事件的脚本Sensio \ Bundle \ DistributionBundle \ Composer \ ScriptHandler :: clearCache以exception终止

虽然他们是伟大的build议,我做了备份后尝试重build引导caching文件,并运行composer update这些仍然给了我同样的问题。

对我来说,我的解决scheme:我把它的网站上的文件, rm -rf app/cache/* -R删除一切内的caching目录,然后我就能够运行composer php更新,清除caching等..没有问题。