我管理一个已有几年历史的应用程序,我不是该应用程序的原始开发人员。
该网站自2014年底以来一直在AWS EB上运行,使用laravel 4。
今天,AWS终止了我的ec2实例,因为该类型的box即将退役。新实例顺利生成,但应用程序未运行。
当我尝试部署一个版本的theapp(通过zip)时,我会得到以下错误:
[实例:i-03441954f29775f02]命令在实例上失败。回来代码:1输出:[CMD AppDeploy/AppDeployStage0/AppDeployPreHook/10_composer_install.sh]命令失败,错误代码为1:/opt/elasticbeanstall/hooks/appdeploy/pre/10_composer_install.sh++/opt/elasticbeanstall/bin/get-config容器-k app_staging_dir+EB_APP_STAGING_DIR=/var/APP/ondeck+cd/var/APP/ondeck+'['-fcomposer.json']'+导出composer_HOME=/root+composer-HOME=/rot+'['-d vendor']'++/opt/elasticbeanstall/bin/get-configoptionsettings-n aws:elasticbeanstalt:容器:php:phpini-ocomposer_options+PHP_composer_options=+echo'找到composer.json文件正在尝试安装供应商。'找到composer.json文件。正在尝试安装供应商。+composer.phar安装--无ansi--没有交互[ExpectedValueException]。
不幸的是,在过去的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盒子本身做些什么。我要说的是,服务器在过去已经重新生成过——可能两年左右都没有,没有问题。
这些是EB的服务器规格。
64位Amazon Linux 2014.09 v1.0.9运行PHP 5.5
这个问题也发生在我身上,在深入挖掘/var/log/eb-activity.log
(你必须ssh到你的实例中才能访问这个日志文件)之后,我发现我的composer.json中的一些包需要PHP 7.3版本,而在我的实例中,我有PHP 7.2。
我解决这个问题的方法是将依赖关系(在我的例子中是laravel websockets)从1.3降级到1.2,因为目前PHP 7.3不受弹性beastalk的支持。
但是,如果是这种情况,您也可以升级您的PHP版本。
为了真正了解问题所在,最好访问日志文件/var/log/eb-activity.log