Php 为什么不是';在“中未找到或重新创建t bin/控制台脚本”;“银行标识代码”;在composer安装之后?

Php 为什么不是';在“中未找到或重新创建t bin/控制台脚本”;“银行标识代码”;在composer安装之后?,php,symfony,composer-php,symfony-4.3,symfony-flex,Php,Symfony,Composer Php,Symfony 4.3,Symfony Flex,我改变了我的composer.json,当我改变的时候 rm -rf vendor/* && rm -rf bin/* && composer update 我在进程结束时收到错误消息,因为在文件夹bin中找不到Symfony控制台。当我从另一个项目手动复制它时,它可以工作,但这不是解决方案 错误消息如下所示: 。。。。 -安装symfony/测试包(v1.0.6):从缓存加载 -安装symfony/web服务器捆绑包(v4.3.6):从缓存加载 生成自动加载文

我改变了我的composer.json,当我改变的时候

rm -rf vendor/* && rm -rf bin/* && composer update
我在进程结束时收到错误消息,因为在文件夹
bin
中找不到Symfony
控制台
。当我从另一个项目手动复制它时,它可以工作,但这不是解决方案

错误消息如下所示:

。。。。
-安装symfony/测试包(v1.0.6):从缓存加载
-安装symfony/web服务器捆绑包(v4.3.6):从缓存加载
生成自动加载文件
ocramius/包版本:正在生成版本类。。。
ocramius/包版本:…生成版本类完成
正在执行脚本缓存:清除[KO]
[KO]
脚本缓存:返回清除,错误代码为1
!!  无法打开输入文件:./bin/控制台
!!  
Script@auto scripts是通过post update cmd调用的
错误很明显,因为bin文件夹确实包含指向其他脚本加载的符号链接,但不包含控制台脚本本身

我试图清除composer缓存,但没有任何区别

如果我创建一个全新的空文件夹,并将
composer.json
文件复制到那里,然后运行
composer安装
,则一切正常,
控制台
脚本位于
bin
文件夹中,它应该在那里

有什么区别


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

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

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

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


该文件是在
install
过程中在空文件夹上创建的,因为flex配方在
install
过程中执行,原因有两个:

  • Flex配方仅在安装期间执行,而不是在更新期间执行
  • 将复制整个
    bin
    目录以重新创建,但不会覆盖现有目录。(因此,如果您将此目录及其内容保留在repo上,那么当您将项目部署到生产环境中时,它不会被覆盖)