在Amazon Linux上安装memcached

问题描述

我正在尝试将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"

here所述,但没有运气。

因此,接下来,我尝试了针对Amazon Linux EC2 v1的AWS支持here概述的建议。浏览cfn-init-cmd.log时,软件包libmemcached已成功安装,但是,该脚本在尝试安装memcached时失败,因为它无法根据命令{ {1}}。作为参考,我在/use/bin/pecl7中的完整脚本是:

01_install_memcached

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

解决方法

因此,这个经过稍微修改的.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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...