Подтвердить что ты не робот

Обновление Symfony2 bootstrap.php.cache

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

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

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

Я попробовал очистить кеш symfony, но безрезультатно.

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

4b9b3361

Ответ 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 удалил все внутри каталога кеша, тогда я смог запустить как обновление композитора, так и очистить кеш и т.д. без проблем.