Symfony2更新bootstrap.php.cache

时间:2011-05-20 12:46:21

标签: symfony

最近我在Symfony2上从symfony.com上提供的BETA版本开始了一个项目

过了一段时间,我需要升级到master分支,所以我从github中检索了最新的并在vendor / symfony中切换它。

但是,我的bootstrap.php.cache和bootstrap_cache.php.cache未升级,这会产生错误。

我尝试清除symfony缓存,但无济于事。

如何更新这些文件以与我的项目相对应?

9 个答案:

答案 0 :(得分:66)

在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

答案 1 :(得分:59)

如果运行composer update命令,您还将更新项目依赖项,这不是此处所需的行为。如果你这样做,你将不得不测试新的变化,看看它们是否确实会影响你的应用程序。

因此,如果您只想重建引导缓存文件,我建议您运行 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"
    ]
}

请考虑您还可以在其中创建一组新脚本来重建引导程序文件并清除缓存而不安装资产等等:

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

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

答案 2 :(得分:27)

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

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

答案 3 :(得分:22)

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

要更新bootstrap.php.cache,请运行

php bin/vendors update

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

答案 4 :(得分:17)

你试过跑步吗?

php bin/build_bootstrap.php

这将重新生成引导程序文件

答案 5 :(得分:11)

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

答案 6 :(得分:2)

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

因此,如果您正在使用多个Symfony版本并且不知道build_bootstrap的位置,那么这将起到作用(仅限Linux / Mac):

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

答案 7 :(得分:1)

搜索“ build_bootstrap.php”所在的位置。

对于我在 Symfony3.4

中的情况
php ./vendor/sensio/distribution-bundle/Resources/bin/build_bootstrap.php

答案 8 :(得分:0)

我无法解决我的引导缓存问题,也无法更新它。我得到了很多这个

  

[Symfony的\元器件\调试\异常\ ContextErrorException]     警告:在/home/sites/fuji/app/bootstrap.php.cache第2870行中为foreach()提供的参数无效

     

脚本   SENSIO \包\ DistributionBundle \作曲\ ScriptHandler :: clearCache   处理以异常终止的post-update-cmd事件

虽然它们是很好的建议,但我确实在备份后尝试重建bootstrap缓存文件,并运行composer update这些仍然给了我同样的问题。

我的解决方案: 我用它上面的网站文件进入电脑, rm -rf app/cache/* -R删除了缓存目录中的所有内容,然后我能够运行编辑器更新,清除缓存等等。没有任何问题。