Symfony2 обновляет bootstrap.php.cache

50

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

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

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

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

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

Теги:

8 ответов

68
Лучший ответ

В версии 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
  • 0
    Похоже, что это ничего не делает в моем проекте, когда я запускаю вышеупомянутый скрипт (это также после того, как я обновил пакеты своих поставщиков). Есть идеи по устранению неполадок?
  • 0
    @ Нет, вы пытались удалить (сначала сделать резервную копию) файлы кэша начальной загрузки, а затем запустить скрипт?
Показать ещё 3 комментария
57

Если вы запустите команду 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

  • 4
    лучший ответ для Symfony> = 2.3
26

В последнем 2.1.0-DEV фактический script находится здесь:

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

  • 3
    Для текущей composer update 2.1 composer update позаботится об этом - в конфигурацию композитора добавлен массив scripts
  • 0
    @barius Только для готовых скриптов Composer, которых, например, у меня не было.
23

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

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

php bin/vendors update

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

  • 3
    Действительно, composer update запускает скрипт «build bootstrap». Это текущий актуальный ответ.
18

Вы пытались запустить:

php bin/build_bootstrap.php

Это приведет к восстановлению файлов начальной загрузки

  • 2
    Не знал, что там было. Спасибо!
  • 12
    Стоит отметить, что это больше не работает. Вся папка bin/ папка исчезла.
Показать ещё 2 комментария
10

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

2

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

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

$ cd vendor/ 
$ find . -name build_bootstrap.php
  • 0
    Никогда не помню точное имя, поэтому каждый раз мне приходится вводить эту команду. find . -iname "*build*bootstrap*php"
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню