Symfony2 обновляет bootstrap.php.cache - PullRequest
52 голосов
/ 20 мая 2011

Недавно я запустил проект в Symfony2 с бета-версии, доступной на symfony.com

Через некоторое время мне понадобилось перейти на основную ветку, поэтому я получил последнюю версию из github и переключил ее на вендор./symfony.

Однако, мои bootstrap.php.cache и bootstrap_cache.php.cache не обновлены, что привело к ошибкам.

Я попытался очистить кэш Symfony, но безрезультатно.

Как мне обновить эти файлы, чтобы они соответствовали моему проекту?

Ответы [ 8 ]

66 голосов
/ 30 июля 2011

В версии 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
59 голосов
/ 13 октября 2014

Если вы запустите команду composer update, вы также обновите зависимости вашего проекта, что здесь не является желаемым поведением.Если вы сделаете это, вам придется протестировать новые изменения, чтобы увидеть, влияют ли они как-то на ваше приложение.

Так что, если вы просто хотите перестроить файл кеша начальной загрузки, тогда я предлагаю запустить пост -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

27 голосов
/ 05 сентября 2012

В последней версии 2.1.0-DEV настоящий скрипт находится здесь:

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

22 голосов
/ 21 января 2012

Я использую Symfony Standard 2.0.9 (без поставщиков).

Чтобы обновить bootstrap.php.cache, просто запустите

php bin/vendors update

Это обновит всепоставщиков (включая самого Symfony) и всегда называют этот скрипт build_bootstrap.php для вас.

17 голосов
/ 20 мая 2011

Вы пробовали запустить:

php bin/build_bootstrap.php

Это восстановит файлы начальной загрузки

11 голосов
/ 18 сентября 2013

Вы можете предпочесть использовать composer install, который «переустанавливает» систему в состояние, определенное в файле composer.lock, и генерирует автозагрузки и bootstrap.php.cache. Использование composer update обновляет все пакеты и изменяет состояние вашей системы.

2 голосов
/ 04 июня 2013

Мне кажется, что скрипт build_bootstrap всегда меняет местоположение :)

Итак, если вы работаете с несколькими версиями Symfony и не знаете, где находится build_bootstrap, это поможет (только для Linux / Mac):

$ cd vendor/ 
$ find . -name build_bootstrap.php
0 голосов
/ 19 августа 2014

Я не мог ни исправить проблему с загрузочным кэшем, ни обновить ее.я получаю много этого

[Symfony \ Component \ Debug \ Exception \ ContextErrorException] Предупреждение: неверный аргумент указан для foreach () в /home/sites/fuji/app/bootstrap.php.cacheline 2870

Script Sensio \ Bundle \ DistributionBundle \ Composer \ ScriptHandler :: clearCache, обрабатывающий событие post-update-cmd, прерванное с исключением

, хотя это были отличные предложения, и япопытался восстановить файл кеша начальной загрузки после его резервного копирования, и запустить composer update они все еще вызывали ту же проблему.

Решение для меня: я зашел на компьютер с файлами сайта, rm -rf app/cache/* -R удалил все внутри каталога кеша, затем я смог запустить обновление композитора, очистить кеш и т. Д. Без проблем,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...