新 EC2 实例 (Elastic Beanstalk) 上的 Composer 失败
Posted
技术标签:
【中文标题】新 EC2 实例 (Elastic Beanstalk) 上的 Composer 失败【英文标题】:Composer Failing on New EC2 Instance (Elastic Beanstalk) 【发布时间】:2018-08-31 07:40:01 【问题描述】:我管理一个几年前的应用程序,我不是最初的开发者。
该网站自 2014 年底以来一直在 AWS EB 上运行 - 使用 laravel 4。
今天,AWS 终止了我的 ec2 实例,因为该盒子的类型即将退役。新实例生成没有问题,但应用程序没有运行。
当我尝试部署应用程序的某个版本(通过 zip)时,我收到以下错误:
[实例:i-03441954f29775f02] 实例上的命令失败。返回 代码:1 输出: [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/10_composer_install.sh] 命令失败,错误代码为 1: /opt/elasticbeanstalk/hooks/appdeploy/pre/10_composer_install.sh ++ /opt/elasticbeanstalk/bin/get-config 容器 -k app_staging_dir + EB_APP_STAGING_DIR=/var/app/ondeck + cd /var/app/ondeck + '[' -f composer.json ']' + 导出 COMPOSER_HOME=/root + COMPOSER_HOME=/root + '[' -d 供应商']' ++ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o composer_options + PHP_COMPOSER_OPTIONS= + echo '找到 composer.json 文件。试图安装供应商。找到 composer.json 文件。 尝试安装供应商。 + composer.phar 安装 --no-ansi --no-interaction [UnexpectedValueException] .
不幸的是,在过去的 4 到 5 年里,我并没有成为一名 PHP 开发人员,所以我有点困惑从哪里开始。这似乎是文件本身的问题,这就是我所拥有的:
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require":
"laravel/framework": "4.2.*",
"zizaco/confide": "~4.0@dev",
"dollar/generators": "dev-master",
"anahkiasen/former": "dev-master",
"guzzlehttp/guzzle": "~4.0",
"rhumsaa/uuid": "~2.7",
"aws/aws-sdk-php-laravel": "1.*",
"nesbot/Carbon": "*",
"maatwebsite/excel": "1.*",
"mandrill/mandrill": "1.0.*",
"barryvdh/laravel-snappy": "0.1.x",
"h4cc/wkhtmltopdf-amd64": "0.12.0",
"davibennun/laravel-raygun": "dev-master",
"dchesterton/marketo-rest-api": "^0.0.5"
,
"autoload":
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
,
"scripts":
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
,
"config":
"preferred-install": "dist"
,
"minimum-stability": "stable"
除此之外,我不确定是否需要对 EC2 盒子本身做些什么。我会说服务器在过去已经重新生成 - 可能不会 2 年左右,没有问题。
这些是来自 EB 的服务器规格。
运行 PHP 5.5 的 64 位 Amazon Linux 2014.09 v1.0.9
【问题讨论】:
尝试一些原始包,如 (single sdk),以隔离问题。如果服务正常,则说明作曲家配置错误。 【参考方案1】:这个问题也发生在我身上,在深入研究/var/log/eb-activity.log
(您必须通过 ssh 进入您的实例才能访问此日志文件)后,我发现我的 composer.json 中的一些包需要 PHP 版本 7.3 和在我的实例中,我有 PHP 7.2。
我为解决这个问题所做的是将依赖项(在我的例子中是 laravel-websockets)从 1.3 降级到 1.2,因为目前弹性 beanstalk 不支持 PHP 7.3。
但如果是这种情况,您也可以升级您的 PHP 版本。
要想真正知道是什么问题,最好访问日志文件/var/log/eb-activity.log
【讨论】:
以上是关于新 EC2 实例 (Elastic Beanstalk) 上的 Composer 失败的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Elastic Beanstalk 中为 Auto Scaling EC2 实例配置触发器?
Elastic beanstalk Auto Scaling - 多长时间启动一个新实例
找出与 Elastic Beanstalk 应用程序关联的 EC2 实例?