在亚马逊上安装 memcached Linux
Installing memcached on Amazon Linux
我正在尝试在 Amazon Linux EC2 实例上将 memcached
用于 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,但运气不佳。
接下来,我尝试了 AWS 支持 here 为 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'
有什么解决办法吗?
所以这个稍微修改过的 .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
我通过直接在安装中添加 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
我正在尝试在 Amazon Linux EC2 实例上将 memcached
用于 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,但运气不佳。
接下来,我尝试了 AWS 支持 here 为 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'
有什么解决办法吗?
所以这个稍微修改过的 .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
我通过直接在安装中添加 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