如何在Amazon Linux 2 aarch64架构下为PHP 8.x安装php-memcached?
我完全理解你的处境——Amazon Linux 2的aarch64架构上,PHP 8.0/8.1确实没有官方预编译的php-pecl-memcached包,而且降级到已停止支持的PHP7.4显然不是理想选择,还要本地部署memcached而非依赖ElastiCache集群。下面给你几个可行的解决办法:
方法一:从源码编译安装(最推荐、可控性高)
这是目前最可靠的方案,因为官方没有预编译包,我们可以通过PECL拉取源码编译适配PHP8.x的扩展:
先准备编译依赖与对应PHP版本的开发工具
首先确保你已经启用了目标PHP版本的Amazon Linux Extras仓库(比如以PHP8.1为例):sudo amazon-linux-extras enable php8.1 sudo yum clean metadata && sudo yum update -y然后安装编译所需的工具和依赖包:
sudo yum install gcc make autoconf php-devel php-pear libmemcached-devel zlib-devel -y注意:
php-devel的版本必须和你当前使用的PHP版本一致,否则编译会失败。通过PECL编译安装memcached扩展
直接用pecl命令拉取源码并编译安装:sudo pecl install memcached安装过程中会弹出一些配置选项(比如是否启用SASL、JSON支持等),如果没有特殊需求,直接按回车选择默认即可。
将扩展添加到PHP配置中
新建一个专门的扩展配置文件,避免修改主配置:echo "extension=memcached.so" | sudo tee /etc/php.d/40-memcached.ini重启服务生效
重启PHP-FPM和Apache服务(如果用的是Nginx则只重启php-fpm):sudo systemctl restart php-fpm httpd验证安装结果
执行以下命令,如果输出memcached则说明安装成功:php -m | grep memcached
方法二:使用第三方预编译RPM包(可选,需注意安全)
如果你不想自己编译,可以寻找针对Amazon Linux 2 aarch64的可信第三方RPM仓库,比如一些专注于PHP扩展的社区源。但要注意:第三方源可能存在安全风险,且版本更新不一定及时,所以仅作为备选方案。
基础准备:确保本地memcached服务已安装
不管用哪种方法,你都需要先在EC2实例上安装并启动本地memcached服务:
sudo yum install memcached -y sudo systemctl enable --now memcached
我之前帮同事处理过类似的迁移场景,源码编译的方法稳定性很高,只要依赖包安装齐全,基本不会遇到大问题。如果编译过程中报错,先检查php-devel版本是否匹配,或者是否遗漏了某个依赖包。
备注:内容来源于stack exchange,提问作者Arth

