2015-12-10 69 views
16

我通過官方的symfony安裝程序(http://symfony.com/download)安裝了新的symfony3實例。做完第一件事後,我將該項目提交給Git,並在前一天將其克隆到另一臺計算機上。 克隆後,我運行「作曲家安裝」來安裝所有的symfony依賴項。 現在出現問題:腳本ScriptHandler::clearCache因錯誤而停止:Could not open input file: app/console。 這就是 - symfony3有一個新的目錄結構 - 所以console現在駐留在/bin - 不在/app。 如何告訴作曲家/項目使用新結構而不是舊結構?新的Symfony 3安裝:無法打開輸入文件:在作曲家安裝的應用程序/控制檯

我在這裏閱讀(What is the new Symfony 3 directory structure?)關於控制檯命令SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true - 但這不適用於我的情況。

任何提示?

+0

問題是否只發生在您克隆項目之後?你能比較一個新的Symfony3和克隆的項目嗎? –

+0

我想你可能在初次安裝後更改了composer.json文件。如果bin/console沒有找到,那麼你需要重新開始。即使清除緩存幫助。 – Cerad

回答

16

ScriptHandlercomposer.json文件名中的額外配置密鑰中取出目錄symfony-bin-dir。所以檢查作曲家包含正確的配置項,如例如:

composer.json

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

編輯:

問題是要CHE作曲家的高速緩存,所以有關它解決了使用以下命令將其清除:

>php composer.phar clear-cache 

希望這有助於

+0

感謝您的提示,但composer.json是正確的,就像您的示例... – cklm

+1

Hi @cklm可能是一個與作曲家緩存相關的問題?嘗試通過命令'php composer.phar clear-cache'去除作曲者緩存 - – Matteo

+0

非常感謝 - 清理作曲者緩存(爲什麼?!)解決了我的問題! – cklm

7

我一直在遇到同樣的問題。該腳本使用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的專家,所以我我不確定這是否是最優雅的做法,但這對我來說是有效的。

32

只需創建var目錄。之後,composer installcomposer 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-dircomposer.jsonextra,並有該目錄已有。

+2

我可以確認:當'var'缺少=>無法在作曲家安裝中打開應用程序/控制檯。創建'var'爲我做了訣竅。 –

+0

對我也有竅門。在從3.3更新到3.4後經歷了這個,但我不知道爲什麼,從未發生過... – fnagel