Обновление Symfony2 bootstrap.php.cache
Недавно я начал проект в Symfony2 из версии BETA, доступной на symfony.com
Через некоторое время мне нужно было перейти на главную ветку, поэтому я получил последнюю версию github и переключил ее в vendor/symfony.
Однако мой bootstrap.php.cache и bootstrap_cache.php.cache не обновлены, что вызвало ошибки.
Я попробовал очистить кеш symfony, но безрезультатно.
Как я могу обновить эти файлы в соответствии с моим проектом?
Ответы
Ответ 1
В версии 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
Ответ 2
Если вы запустите команду 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
Ответ 3
В последнем 2.1.0-DEV фактический script находится здесь:
./vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php
Ответ 4
Я использую Symfony Standard 2.0.9 (без поставщиков).
Чтобы обновить bootstrap.php.cache
, просто запустите
php bin/vendors update
Это приведет к обновлению всех поставщиков (включая сам Symfony) и всегда вызывает это build_bootstrap.php
script для вас.
Ответ 5
Вы пытались запустить:
php bin/build_bootstrap.php
Это приведет к восстановлению файлов начальной загрузки
Ответ 6
Вы можете использовать composer install
, который "переустанавливает" систему в состояние, определенное в файле composer.lock
, и генерирует автозагрузки и bootstrap.php.cache. Использование composer update
обновляет все пакеты и изменяет состояние вашей системы.
Ответ 7
Мне кажется, что build_bootstrap script всегда меняет местоположение:)
Итак, если вы работаете с несколькими версиями Symfony и не знаете, где находится build_bootstrap, это будет делать трюк (только для Linux/Mac):
$ cd vendor/
$ find . -name build_bootstrap.php
Ответ 8
Я не мог исправить проблему в кэше начальной загрузки и не обновлять ее. я получал много этого
[Symfony\Component\Debug\Exception\ContextErrorException] Предупреждение: неверный аргумент, предоставленный foreach() в /home/sites/fuji/app/bootstrap.php.cache строке 2870
ScriptSensio\Bundle\DistributionBundle\композитор\ScriptHandler:: ClearCache обработка события post-update-cmd завершается исключением
хотя они были отличными предложениями, и я попытался восстановить файл кеша начальной загрузки после его резервного копирования, а для запуска composer update
все это дало мне ту же проблему.
Решение для меня:
я обстрелял компьютер с файлами сайта на нем,
rm -rf app/cache/* -R
удалил все внутри каталога кеша, тогда я смог запустить как обновление композитора, так и очистить кеш и т.д. без проблем.