web-dev-qa-db-fra.com

Symfony2 mettant à jour bootstrap.php.cache

Récemment, j'ai démarré un projet dans Symfony2 à partir de la version BETA disponible sur symfony.com

Après un certain temps, je devais passer à la branche master. J'ai donc récupéré le dernier en date de github et je l'ai changé de vendeur/symfony.

Cependant, mes fichiers bootstrap.php.cache et bootstrap_cache.php.cache ne sont pas mis à niveau, ce qui génère des erreurs. 

J'ai essayé de vider le cache de symfony, en vain.

Comment puis-je mettre à jour ces fichiers pour qu'ils correspondent à mon projet?

51
jihi

Dans la version 2.0, le fichier d'origine est ici:

./vendor/bundles/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php

Edit: dans la version 2.3 le fichier est ici

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

Si vous exécutez la commande composer update, vous mettrez également à jour les dépendances de votre projet, ce qui n’est pas le comportement souhaité ici. Si vous faites cela, vous devrez tester les nouvelles modifications pour voir si elles affectent votre application d'une manière ou d'une autre.

Donc, si vous voulez juste reconstruire votre fichier de cache d’initialisation, je vous suggère d’exécuter la commande post-update-cmd .

Par conséquent, vous devriez utiliser:

composer run-script post-update-cmd

qui dans mon cas exécute les scripts suivants (voir 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"
    ]
}

Veuillez considérer que vous pouvez également créer un nouveau jeu de scripts pour reconstruire simplement le fichier d'amorçage et vider le cache sans installer les actifs, etc.:

"scripts": {
    "reset-bootstrap-cmd": [
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache"
    ]
}

et puis ... composer run-script reset-bootstrap-cmd

59
Francesco Casula

Dans la dernière version 2.1.0-DEV, le script actuel est ici:

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

27
Gregoire

J'utilise Symfony Standard 2.0.9 (sans fournisseurs).

Pour mettre à jour bootstrap.php.cache, lancez simplement

php bin/vendors update

Cela mettra à jour tous les fournisseurs (y compris Symfony lui-même) et appellera toujours ce script build_bootstrap.php pour vous.

22
seb

Avez-vous essayé de courir:

php bin/build_bootstrap.php

Cela va régénérer les fichiers d'amorçage

17
d.syph.3r

Vous préférerez peut-être utiliser composer install qui "réinstalle" le système à l'état défini dans le fichier composer.lock et génère des autoloads et bootstrap.php.cache. L'utilisation de composer update met à jour tous les packages et modifie l'état de votre système.

11
dfri

J'ai l'impression que le script build_bootstrap change constamment d'emplacement :) 

Donc, si vous travaillez avec plusieurs versions de Symfony et que vous ne savez pas où se trouve build_bootstrap, ceci fera l'affaire (Linux/Mac uniquement):

$ cd vendor/ 
$ find . -name build_bootstrap.php
2
Victor Henriquez

je ne pouvais pas résoudre un problème sur mon cache d'amorçage, ni le mettre à jour. je devenais beaucoup de cela

[Symfony\Component\Debug\Exception\ContextErrorException] Avertissement: argument non valide fourni pour foreach () dans la ligne /home/sites/fuji/app/bootstrap.php.cache

Scénario Sensio\Bundle\DistributionBundle\Composer\ScriptHandler :: clearCache gestion de l'événement post-update-cmd terminé avec une exception

bien que c'étaient de bonnes suggestions, et j'ai essayé de reconstruire le fichier de cache d'amorçage après l'avoir sauvegardé. L'exécution de composer update m'a donné le même problème. 

Solution pour moi: J'ai fouillée dans le PC avec les fichiers du site dessus, rm -rf app/cache/* -R a tout supprimé dans le répertoire de cache puis j’ai pu exécuter la mise à jour du compositeur, ET effacer le cache, etc. sans aucun problème. 

0
blamb