首页 > 解决方案 > 让作曲家在 App Engine 标准环境中工作?

问题描述

我们正在尝试部署一个 PHP 应用程序,其中包含由 Composer 生成的供应商文件夹等。成功部署后访问应用程序时,我们收到错误 500:

PHP致命错误:require_once():无法打开所需的'/base/data/home/apps/appname/initial.416696519564391510/include/fragments/vendor/autoload.php'(include_path='.;/base/data/home/ apps/appname/initial.416696519564391510/;/base/alloc/tmpfs/dynamic_runtimes/php55_dynamic/4d9dbd56f8406c08/sdk') 在 /base/data/home/apps/appname/initial.416696519564391510/include/fragments/drive.php 上线4

第 4 行包含:

require_once __DIR__ . '/vendor/autoload.php';

我们注意到 vendor 文件夹丢失了,即使它位于本地服务器的根目录(app.yaml 所在的位置)中。所以它不会上传由作曲家生成的供应商文件夹。我们在某处读到,默认情况下,vendor/ 目录在生成的 .gcloudignore 文件中被忽略,以减少部署中发送的文件数量。所以我们从 .gcloudignore 文件中注释掉了 vendor 文件夹并再次部署了应用程序,并在部署时遇到了这个错误

错误:(gcloud.app.deploy)INVALID_ARGUMENT:此部署文件过多。此应用程序的新版本限制为 10000 个文件。- '@type': type.googleapis.com/google.rpc.BadRequest fieldViolations: - 描述:这个部署文件太多。此应用程序的新版本限制为 10000 个文件。字段:version.deployment.files[...]

我们如何解决这个问题,要么让 composer 在应用引擎标准环境 PHP 5.5 中工作,要么部署包含超过 10 000 个文件的供应商文件夹?

标签: phpgoogle-app-enginecomposer-phpautoloadvendor

解决方案


通过从 Vendor 文件夹中清除不必要的文件解决了该问题。


推荐阅读