App Engine Cloud Build 抛出不正确的作曲家安装错误

App Engine Cloud Build throwing incorrect composer install error

所以...我有一个奇怪的。我有一个格式如下的 composer.json 文件:

{
    "require": {
        "twilio/sdk": "^6.20"
    },
    "autoload": {
        "classmap": [
            "model/*"
        ]
    }
}

我正在尝试将 PHP 应用程序与 composer.json 一起部署到 App Engine 应用程序服务。但是,当 Cloud Build 运行s composer install --no-dev --no-progress --no-suggest --no-interaction 构建应用程序时,Composer 会抛出此错误:

Step #6 - "builder": 
Step #6 - "builder":                                                                                                  
Step #6 - "builder":   [RuntimeException]                                                                             
Step #6 - "builder":   Could not scan for classes inside "model/*" which does not appear to be a file nor a folder  
Step #6 - "builder":                                                                                                  
Step #6 - "builder": 

问题是,当我 运行 App Engine 正在构建的目录中的确切命令时,我生成自动加载 class 没问题。

现在模型文件夹中有一个class递归。

此外,当我从 composer.json 中删除 autoload 部分时,它可以很好地部署到应用程序引擎,并且我已经验证了部署的应用程序文件中目录的存在。

所以我的问题是:

为什么 Cloud Build 出现我无法在本地重现的作曲家错误?

---- 编辑 ----

我的文件结构如下所示:

在大多数情况下,这是由于复制或克隆而发生的,并且您有一些损坏的文件或任何作曲家更新已崩溃或中断。

所以,只需删除供应商文件夹并重新安装

composer clearcache && rm -rf vendor && composer install

此外,classmap 的问题是每次创建新的 class 文件时都需要重新生成 classmap 数组,尽管 Classmap 自动加载是自动加载器中最快的因为它从预建数组加载 classes。

从 Composer 2.0 开始,类映射路径中支持通配符。我假设在构建期间使用了 Composer 1.x,但它不识别此语法。

我建议只从路径中删除星号,因为含义完全相同,而且它也适用于较旧的 Composer。

"autoload": {
    "classmap": [
        "model/"
    ]
}