如何解决App Engine Cloud Build 抛出不正确的 Composer 安装错误
所以...我有一个奇怪的。我有一个格式如下的 composer.json 文件:
{
"require": {
"twilio/sdk": "^6.20"
},"autoload": {
"classmap": [
"model/*"
]
}
}
我正在尝试将带有 composer.json 的 PHP 应用程序部署到 App Engine 应用程序服务。但是,当 Cloud Build 在构建应用程序时运行 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 正在构建的目录中运行那个确切的命令时,我生成的自动加载类很好。
现在模型文件夹中有一个递归类。
此外,当我从 autoload
中删除 composer.json
部分时,它会很好地部署到应用引擎,并且我已经验证了部署的应用文件中是否存在该目录。
所以我的问题是:
为什么 Cloud Build 收到我无法在本地重现的 Composer 错误?
---- 编辑----
解决方法
自 Composer 2.0 以来,类映射路径中支持通配符。我假设在构建期间使用 Composer 1.x,并且它不识别此语法。
我建议只从路径中删除星号,因为含义完全相同并且它也适用于较旧的 Composer。
"autoload": {
"classmap": [
"model/"
]
}
,
在大多数情况下,这是由于复制或克隆而发生的,并且您有一些损坏的文件或任何 Composer 更新已崩溃或中断。
所以,只需删除供应商文件夹并重新安装
composer clearcache && rm -rf vendor && composer install
此外,classmap 的问题是每次创建新类文件时都需要重新生成 classmap 数组,尽管 Classmap 自动加载是自动加载器中最快的,因为它从预构建的数组中加载类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。