1

我改变了我的composer.json,突然间,当我这样做的时候

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

我在进程结束时收到错误消息,因为console在文件夹中找不到Symfony bin。当我从另一个项目手动将其复制到那里时,它可以工作,但这不是解决方案。

错误信息如下:

 ....
  - 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文件夹中,它应该在哪里。

有什么不同?

当我稍后自动运行它以进行自动部署时,我如何确定控制台会在那里?

4

1 回答 1

2

首先,您不应该删除您的bin/console脚本。这是您的应用程序的一部分,它相当于public/index.php但作为控制台入口点。

最有可能的是,该文件应该保存在您的源代码存储库中。

因此,在部署时保证该文件存在的最佳方法是:不要删除它,它是源代码的一部分,应该保留。


该文件是在一个空文件夹中创建的,因为 flex 配方会因为两件事而install被执行:install

  • Flex 配方仅在安装期间执行,而不是在更新期间执行。
  • symfony/console 的 flex 配方将复制整个bin目录以重新创建它,但不会覆盖现有目录。(因此,如果您将此目录及其内容保留在您的存储库中,那么当您将项目部署到生产环境时,它不会被覆盖)。
于 2019-11-08T19:01:31.957 回答