簡體   English   中英

為什么作曲家安裝后在“bin”中找不到或重新創建 bin/console 腳本?

[英]Why isn't bin/console script found nor recreated in “bin” after composer install?

我改變了我的 composer.json 突然間,當我這樣做時

rm -rf vendor/* && rm -rf bin/* && composer update

我在進程結束時收到錯誤消息,因為在文件夾bin中找不到 Symfony console 當我從另一個項目手動將其復制到那里時,它可以工作,但這不是解決方案。

錯誤信息如下:

 ....
  - Installing symfony/test-pack (v1.0.6): Loading from cache
  - Installing symfony/web-server-bundle (v4.3.6): Loading from cache
Generating autoload files
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!  Could not open input file: ./bin/console
!!  
Script @auto-scripts was called via post-update-cmd   

錯誤很明顯,因為 bin 文件夾確實包含指向其他腳本加載的符號鏈接,但不包含控制台腳本本身。

我嘗試清除作曲家緩存,但沒有任何區別。

如果我創建一個全新的空文件夾並將composer.json文件復制到那里並運行composer install ,一切都很好, console腳本在bin文件夾中,它應該在哪里。

有什么區別?

當我稍后自動運行它以進行自動部署時,我如何確定控制台會在那里?

首先,您不應該刪除您的bin/console腳本。 這是您的應用程序的一部分,它相當於public/index.php但作為控制台入口點。

最有可能的是,該文件應該保存在您的源代碼存儲庫中。

因此,在部署時保證該文件存在的最佳方法是:不要刪除它,它是源代碼的一部分,應該保留。


該文件是在install過程中在一個空文件夾上創建的,因為在install過程中會執行 flex 配方,原因有兩個:

  • Flex 配方僅在安裝期間執行,而不是在更新期間執行。
  • symfony/console 的 flex 配方將復制整個bin目錄以重新創建它,但不會覆蓋現有目錄。 (因此,如果您將此目錄及其內容保留在您的存儲庫中,那么當您將項目部署到生產環境時,它不會被覆蓋)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM