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?
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
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
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
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.
Avez-vous essayé de courir:
php bin/build_bootstrap.php
Cela va régénérer les fichiers d'amorçage
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.
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
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.