1

我正在尝试memcached在 Amazon Linux EC2 实例上使用 PHP。在我的 PHP 脚本中,当我调用$mc = new Memcached();以下错误时,会引发以下错误/var/log/php-fpm/www-error.log

[06-Sep-2020 00:49:44 UTC] PHP Fatal error:  Uncaught Error: Class 'Memcached' not found in /var/app/current/memcached.php:8
Stack trace: #0 {main}
  thrown in /var/app/current/memcached.php on line 8

调用php -m我没有看到memcached列出,我认为这意味着它没有安装。

所以,首先我尝试:

sudo yum install memcached
sudo yum install php70-pecl-memcached

以及/etc/php.ini要包含的编辑

session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

如此处所述但没有运气。

所以接下来,我尝试了 AWS 支持在此处为 Amazon Linux EC2 v1 概述的建议。通过查看cfn-init-cmd.log,该软件包libmemcached已成功安装,但是,该脚本在尝试安装时失败,memcached因为它无法/use/bin/pecl7按照命令找到01_install_memcached。作为参考,我的完整脚本.ebextensions/memcache.config是:

packages:
  yum:
    libmemcached-devel: []

commands:
  01_install_memcached:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl7 install memcached
    test: '! /usr/bin/pecl info memcached'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="memcached.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="memcached.so"' > /etc/php-7.3.d/41-memcached.ini
    test: '/usr/bin/pecl7 info memcached'

关于如何解决的任何想法?

4

2 回答 2

1

所以这个稍微修改.ebextension过的脚本起作用了。我不是 AWS/Linux/PHP 专家,所以可能有更正确的方法来解决这个问题。

packages:
  yum:
    libmemcached-devel: []

commands:
  01_install_memcached:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl install memcached
    test: '! /usr/bin/pecl info memcached'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="memcached.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="memcached.so"' > /etc/php.d/41-memcached.ini
于 2020-09-06T13:57:04.823 回答
0

我通过将 memchache 直接添加到安装中解决了这个问题

packages:
  yum:
      libmemcached-devel: []
       memcached
commands:
  01_rmfromphpini:
    command: /bin/sed -i -e '/extension="memcached.so"/d' /etc/php.ini
  02_createconf:
    command: /bin/echo 'extension="memcached.so"' > /etc/php.d/41-memcached.ini
于 2022-01-24T15:00:00.277 回答