Недавно я начал проект в Symfony2 из версии BETA, доступной на symfony.com
Через некоторое время мне нужно было перейти на главную ветку, поэтому я получил последнюю версию github и переключил ее в vendor/symfony.
Однако мой bootstrap.php.cache и bootstrap_cache.php.cache не обновлены, что вызвало ошибки.
Я попробовал очистить кеш symfony, но безрезультатно.
Как я могу обновить эти файлы в соответствии с моим проектом?
В версии 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
, вы также обновите зависимостей проекта, которые здесь не являются желаемым поведением. Если вы это сделаете, вам придется протестировать новые изменения, чтобы увидеть, действительно ли они влияют на ваше приложение.
Итак, если вы просто хотите пересоздать свой файл кэша начальной загрузки, я предлагаю вам запустить команду 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.1.0-DEV фактический script находится здесь:
./vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php
composer update
2.1 composer update
позаботится об этом - в конфигурацию композитора добавлен массив scripts
Я использую Symfony Standard 2.0.9 (без поставщиков).
Чтобы обновить bootstrap.php.cache
, просто запустите
php bin/vendors update
Это приведет к обновлению всех поставщиков (включая сам Symfony) и всегда вызывает это build_bootstrap.php
script для вас.
composer update
запускает скрипт «build bootstrap». Это текущий актуальный ответ.
Вы пытались запустить:
php bin/build_bootstrap.php
Это приведет к восстановлению файлов начальной загрузки
bin/
папка исчезла.
Вы можете использовать composer install
, который "переустанавливает" систему в состояние, определенное в файле composer.lock
, и генерирует автозагрузки и bootstrap.php.cache. Использование composer update
обновляет все пакеты и изменяет состояние вашей системы.
Мне кажется, что build_bootstrap script всегда меняет местоположение:)
Итак, если вы работаете с несколькими версиями Symfony и не знаете, где находится build_bootstrap, это будет делать трюк (только для Linux/Mac):
$ cd vendor/
$ find . -name build_bootstrap.php
find . -iname "*build*bootstrap*php"
Я не мог исправить проблему в кэше начальной загрузки и не обновлять ее. я получал много этого
[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
удалил все внутри каталога кеша, тогда я смог запустить как обновление композитора, так и очистить кеш и т.д. без проблем.