J'ai installé une nouvelle instance de symfony3 via l'installateur officiel de symfony ( http://symfony.com/download ). Après avoir fait les premières choses, j'ai validé le projet sur Git et l'ai cloné l'autre jour sur un autre ordinateur. Après le clonage, j'ai lancé "composer install" pour installer toutes les dépendances de symfony. Maintenant vient le problème: le script ScriptHandler::clearCache
s'arrête avec une erreur: Could not open input file: app/console
. C'est vrai - symfony3 a une nouvelle structure de répertoire - donc le console
réside maintenant dans /bin
- pas dedans /app
. Comment dire au compositeur/au projet d'utiliser la nouvelle structure au lieu de l'ancienne?
J'ai lu ici ( Quelle est la nouvelle structure de répertoires Symfony 3? ) à propos de la console-command SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
- mais cela ne fonctionne pas dans mon cas.
Des conseils?
ScriptHandler
prend le dir de la clé de configuration supplémentaire dans le composer.json
les noms de fichiers comme symfony-bin-dir
. Vérifiez donc que le composer contient la clé de configuration correcte, comme exemple:
composer.json
....
"extra": {
"symfony-app-dir": "app",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
....
ÉDITER:
Le problème était lié au cache du compositeur. Il a été résolu en l'effaçant avec la commande:
>php composer.phar clear-cache
J'espère que cela t'aides.
Créez simplement le répertoire var
. Après ça composer install
et composer update
fonctionnera bien.
Explication:
vendor/sensio/distribution-bundle/Composer/ScriptHandler.php:462
protected static function useNewDirectoryStructure(array $options)
{
return isset($options['symfony-var-dir']) && is_dir($options['symfony-var-dir']);
}
Vous avez donc besoin des deux pour avoir symfony-var-dir
dans composer.json
's extra
et avoir ce répertoire existant.
J'ai rencontré le même problème. Le script utilise l'existence du répertoire var pour décider d'utiliser la nouvelle structure de répertoires ou l'ancienne. Si var existe, la nouvelle structure de répertoires est utilisée. Sinon, il utilise l'ancienne structure.
Le fichier .gitignore par défaut empêche à la fois le répertoire var et le répertoire bin d'être ajoutés à git.
Ce que j'ai fait pour résoudre le problème pour moi, c'est d'éditer .gitignore dans le répertoire du projet pour qu'il ressemble à ceci:
/app/config/parameters.yml
/bin/*
/build/
/composer.phar
/vendor/
/web/bundles/
/var/*
!var/cache
/var/cache/*
!var/cache/.gitkeep
!var/logs
/var/logs/*
!var/logs/.gitkeep
!var/sessions
/var/sessions/*
!var/sessions/.gitkeep
!bin/console
!bin/symfony_requirements
/phpunit.xml
Je ne prétends pas être un expert en .gitignore, donc je ne suis pas sûr que ce soit la manière la plus élégante de le faire, mais c'est ce qui a fonctionné pour moi.
J'ai eu le même problème:
[RuntimeException]
An error occurred when executing the ""cache:clear --no-warmup"" command:
Could not open input file: app/console
Mon fichier de console se trouve également dans le dossier/bin /, j'ai donc dû l'appeler depuis la racine du projet pour vider le cache chaque fois que je clone le projet depuis DevOps:
php bin/console cache:clear
Ensuite, je peux exécuter composer install
et ça marche bien