Nouvelle installation Symfony 3: Impossible d'ouvrir le fichier d'entrée: app / console dans composer install

j'ai installé une nouvelle instance symfony3 via l'installateur officiel symfony ( http://symfony.com/download ). Après avoir fait les premières choses, j'ai engagé le projet à Git et je 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 symfony. Vient maintenant le problème: le script ScriptHandler::clearCache s'arrête avec une erreur: Could not open input file: app/console . C'est à droite-symfony3 a un nouveau répertoire-structure - ainsi le console réside maintenant dans /bin - pas dans /app . Comment puis-je dire au compositeur/au projet d'utiliser la nouvelle structure au lieu de l'ancienne?

j'ai lu ici ( qu'est-Ce que le nouveau Symfony 3 structure de répertoire? ) à propos de la console-commande SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true - mais cela ne fonctionne pas dans mon cas.

des conseils?

20
demandé sur Community 2015-12-10 12:52:29

3 réponses

le ScriptHandler prend le dir de la clé de configuration supplémentaire dans les noms de fichiers composer.json comme symfony-bin-dir . Vérifiez donc que le compositeur contient la clé de configuration correcte, par exemple:

compositeur.json

....
"extra": {
    "symfony-app-dir": "app",
    "symfony-bin-dir": "bin",
    "symfony-var-dir": "var",
    ....

EDIT:

le problème était lié à la cache de composer. Il a été résolu le nettoyage avec la commande:

>php composer.phar clear-cache

Espérons que cette aide.

18
répondu Matteo 2018-09-12 02:01:09

il suffit de créer var répertoire. Après cela composer install et composer update fonctionneront 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']);
}

donc vous avez besoin à la fois d'avoir symfony-var-dir dans composer.json 's extra et avoir ce répertoire existant.

38
répondu luchaninov 2016-05-21 12:20:48

j'ai rencontré le même problème. Le script utilise l'existance du répertoire var pour décider s'il faut utiliser la nouvelle structure du répertoire ou l'ancienne. Si var existe, la nouvelle structure de répertoire est utilisée. Sinon, il utilise l'ancienne structure.

par défaut .le fichier gitignore empêche l'ajout du répertoire var et du répertoire bin à git.

ce que j'ai fait pour résoudre le problème pour moi était d'éditer .gitignore dans le répertoire de 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 sur .gitignore, donc je ne suis pas sûr que ce soit la façon la plus élégante de le faire, mais c'est ce qui a fonctionné pour moi.

8
répondu Cory 2016-01-30 05:53:49