Composer在新的EC2实例上失败(Elastic Beanstalk)

时间:2018-03-22 01:11:03

标签: php composer-php elastic-beanstalk

我管理了一个几年前的应用程序,我不是原始开发人员。

自2014年底以来,该网站一直在AWS EB上运行 - 使用laravel 4。

今天,AWS终止了我的ec2实例,因为盒子的类型正在退役。新实例产生没有问题,但应用程序没有运行。

当我尝试部署该版本的app(通过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']'+ export COMPOSER_HOME = / root + COMPOSER_HOME = / root +   '['-d vendor']'++ / 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

1 个答案:

答案 0 :(得分:0)

这个问题也发生在我身上,深入研究/var/log/eb-activity.log(您必须ssh进入您的实例以访问此日志文件)之后,我发现composer.json中的某些软件包需要PHP版本7.3,在我的实例中,我安装了PHP 7.2。

我要解决的问题是将依赖关系(在我的情况下为laravel-websockets)从1.3降级为1.2,因为弹性beantalk当前不支持PHP 7.3。

但是,在这种情况下,您也可以升级PHP版本。

为了真正了解问题所在,最好访问日志文件/var/log/eb-activity.log