Я установил новый symfony3-экземпляр через официальный symfony-installer ( http://symfony.com/download ). Сделав первые шаги, я отправил проект в Git и клонировал его на другой день на другом компьютере. После клонирования я запустил «компоновщик установки», чтобы установить все зависимости symfony. Теперь возникает проблема: скрипт ScriptHandler::clearCache
останавливается с ошибкой: Could not open input file: app/console
. Правильно – symfony3 имеет новую структуру каталогов – поэтому console
теперь находится в /bin
– не в /app
. Как я могу сказать композитору / проекту, чтобы использовать новую структуру вместо старой?
Я читаю здесь ( что представляет собой новая структура каталогов Symfony 3? ) О консольной команде SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
– но это не работает в моем случае.
Какие-нибудь советы?
ScriptHandler
берет ScriptHandler
из дополнительного ключа конфигурации в именах файлов composer.json
как symfony-bin-dir
. Поэтому убедитесь, что композитор содержит правильный ключ конфигурации, например:
composer.json
.... "extra": { "symfony-app-dir": "app", "symfony-bin-dir": "bin", "symfony-var-dir": "var", ....
РЕДАКТИРОВАТЬ:
Проблема была связана с ке-кешем композитора, поэтому было решено очистить его командой:
>php composer.phar clear-cache
Надеюсь, что эта помощь
Просто создайте каталог var
. После этого composer install
composer update
будут работать нормально.
Объяснение:
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']); }
Поэтому вам нужно иметь symfony-var-dir
в extra
composer.json
и создать этот каталог.
Я столкнулся с той же проблемой. Скрипт использует существование каталога var, чтобы решить, следует ли использовать новую структуру каталогов или старую. Если var существует, используется новая структура каталогов. В противном случае он использует старую структуру.
Файл по умолчанию .gitignore предотвращает добавление каталога var и каталога bin в git.
То, что я сделал для решения этой проблемы, было для редактирования .gitignore в каталоге проекта, чтобы она выглядела так:
/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
Я не претендую на роль эксперта по .gitignore, поэтому я не уверен, что это самый элегантный способ сделать это, но это то, что сработало для меня.