在 Laravel Elastic Beanstalk 应用程序中找不到类“Memcached”

Posted

技术标签:

【中文标题】在 Laravel Elastic Beanstalk 应用程序中找不到类“Memcached”【英文标题】:Class 'Memcached' not found in Laravel Elastic Beanstalk App 【发布时间】:2020-03-14 03:34:01 【问题描述】:

我正在将一个 laravel 6 项目部署到一个亚马逊弹性 beanstalk 应用程序。它正在运行 php7.3。

eb deploy

错误:ServiceError - 无法部署应用程序。

查看日志我发现它找不到类“Memcached”

@php artisan package:discover --ansi

 Symfony\Component\Debug\Exception\FatalThrowableError  : Class 'Memcached' not found

at /var/app/ondeck/vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php:69
  65|      * @return \Memcached
  66|      */
  67|     protected function createMemcachedInstance($connectionId)
  68|     
> 69|         return empty($connectionId) ? new Memcached : new Memcached($connectionId);
  70|     
  71| 
  72|     /**
  73|      * Set the SASL credentials on the Memcached connection.

Exception trace:

1   Illuminate\Cache\MemcachedConnector::createMemcachedInstance()
    /var/app/ondeck/vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php:48

2   Illuminate\Cache\MemcachedConnector::getMemcached([], [])
    /var/app/ondeck/vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php:21

实例运行的是 Amazon Linux 2.9。

我还添加了一个配置文件来使用这些包安装 memcache。 这是.ebextensions/memcache_installer.cfg.yml 内容如下:

packages: 
  yum:
    memcached: [] 
    php-pecl-memcached: []

错误仍然没有消失。但是它们确实会被安装,因为如果我尝试从实例中安装它们,我会得到包已经安装。

【问题讨论】:

Class 'Memcached' not found的可能重复 你找到答案了吗?从 amazon linux 7.2 迁移到 7.3 ebs 映像后,我们遇到了同样的问题 没有最终使用 7.2.. 有趣...似乎从 PHP 7.1 -> PHP 7.3 AMI 发生了翻天覆地的变化。 【参考方案1】:

我们解决了它(至少在我们的仓库中)。删除 php-pecl-memchached,因为 amazon yum 版本有 php 5 作为依赖项(我们在错误日志中看到了这一点)。

我们在.ebextensions 中添加的内容:

memcached.config:

packages: 
  yum:
    memcached: []
container_commands:
  01_memcached_start:
    command: "/sbin/service memcached restart"

elasticache_01.config

files:
  "/tmp/AmazonElastiCacheClusterClient-2.0.1-PHP73.tar.gz" :
    mode: "000777"
    owner: ec2-user
    group: ec2-user
    source: http://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.3/latest-64bit

elasticache_02.config:

commands:
  01unzip:
    command: "tar -zxvf /tmp/AmazonElastiCacheClusterClient-2.0.1-PHP73.tar.gz -C /usr/lib64/php/7.3/modules"
files:
  /etc/php.d/project.ini:
    content: |
      extension=amazon-elasticache-cluster-client.so
    group: ec2-user
    mode: "000644"
    owner: ec2-user

【讨论】:

以上是关于在 Laravel Elastic Beanstalk 应用程序中找不到类“Memcached”的主要内容,如果未能解决你的问题,请参考以下文章

在 Elastic Beanstalk 上执行 laravel 迁移的问题

Elastic Beanstalk 上的“laravel.log 无法打开”错误

在 AWS Elastic Beanstalk 上运行 Laravel 的迁移命令

在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应

Elastic Beanstalk 预部署 Laravel 节点错误

在 Elastic Beanstalk Composer 更新问题中使用 MongoDB 的 Laravel