web-dev-qa-db-ja.com

新しいSymfony 3のインストール:入力ファイルを開けませんでした:app / console in composer install

公式のsymfony-installer( http://symfony.com/download )から新しいsymfony3-instanceをインストールしました。最初のことを行った後、プロジェクトをGitにコミットし、先日別のコンピューターでクローンを作成しました。クローンを作成した後、「composer install」を実行して、すべてのsymfony依存関係をインストールしました。ここで問題が発生します:スクリプトScriptHandler::clearCacheはエラーで停止します:Could not open input file: app/console。そうです-symfony3には新しいディレクトリ構造があります-console/binではなく/appにあります。コンポーザー/プロジェクトに古い構造ではなく新しい構造を使用するように指示するにはどうすればよいですか?

コンソールコマンドSENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=trueについて( 新しいSymfony 3のディレクトリ構造とは? )を読みましたが、私の場合はうまくいきません。

任意のヒント?

22
cklm

ScriptHandlerは、composer.jsonファイル名の追加の構成キーからsymfony-bin-dirとしてディレクトリを取得します。例として、composerに正しい設定キーが含まれていることを確認します。

composer.json

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

編集:

問題は作曲家のキャッシュに関連していました。次のコマンドで解決しました:

>php composer.phar clear-cache

お役に立てれば。

20
Matteo

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 in composer.jsonextraおよびこのディレクトリが存在します。

43
luchaninov

私は同じ問題に直面しています。このスクリプトは、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の専門家のふりをしていないので、それがそれを行う最もエレガントな方法であるかどうかはわかりませんが、それは私にとってうまくいったものです。

9
Cory

私は同じ問題を抱えていました:

[RuntimeException]
An error occurred when executing the ""cache:clear --no-warmup"" command:

Could not open input file: app/console

コンソールファイルも/ bin /フォルダーにあるため、DevOpsからプロジェクトを複製するたびにプロジェクトのルートからこれを呼び出してキャッシュをクリアする必要がありました。

php bin/console cache:clear

その後、composer installそしてそれはうまく動作します

0
Ivan Bosmansky