php - 让作曲家在 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 个文件的供应商文件夹?
解决方案
通过从 Vendor 文件夹中清除不必要的文件解决了该问题。
推荐阅读
- authorize.net - authorize.net 中未结算的交易到已结算的交易
- javascript - 双击时防止jwplayer视频全屏
- azure-devops - VSTS 积压项目 - 添加没有项目的任务和跨项目视图
- python - 使用 docker-compose up 与 docker-compose run 从容器中执行容器中的命令
- c# - 双缓冲给黑窗
- javascript - 如何从网页保存更改的数据?
- maven-3 - magnolia 模块生成器中的“有效认证路径”问题
- node.js - 为什么将端口更改为https时节点js套接字不起作用?
- node.js - 从phonegap中的ajax调用调用node.js文件?
- netsuite - NetSuite - 删除时间输入记录