AWS EC2新版AMI中yum缺失php-mcrypt包的安装及通用解决方法咨询
解决Amazon Linux 2中无法通过yum安装php-mcrypt的问题及通用包缺失处理方案
我刚遇到过类似的问题,Amazon Linux 2的默认yum源里确实没有php-mcrypt包——原因是PHP 7.2及以上版本已经把mcrypt从核心扩展移除,转由PECL维护了,官方yum仓库不再提供这个包的预编译版本。下面是具体的安装步骤,以及这类包缺失问题的通用解决思路:
一、安装php-mcrypt的具体步骤
- 安装依赖工具和库
首先需要安装PECL(PHP扩展仓库工具)以及编译扩展所需的依赖:sudo yum install php-pear php-devel gcc libmcrypt-devel -y - 通过PECL安装mcrypt扩展
执行以下命令安装适配PHP 7.2+的mcrypt稳定版本:
安装过程中如果提示是否启用mcrypt的加密算法,直接按回车选择默认即可。sudo pecl install mcrypt-1.0.4 - 启用扩展
安装完成后,需要把mcrypt添加到PHP配置文件中:- 编辑
/etc/php.ini文件(如果使用PHP-FPM,可能需要编辑对应版本的FPM配置文件,比如/etc/php-fpm.d/www.conf),在文件末尾添加一行:extension=mcrypt.so
- 编辑
- 重启服务生效
根据你使用的Web服务,重启对应的进程:- 若使用Apache:
sudo systemctl restart httpd - 若使用PHP-FPM:
sudo systemctl restart php-fpm
- 若使用Apache:
- 验证安装
执行php -m | grep mcrypt,如果输出mcrypt,说明安装成功。
二、「缺失软件包」问题的通用解决方法
1. 先确认包名是否正确
有时候包名会随PHP版本或系统版本变化,比如旧版本的php-mcrypt,在部分第三方仓库可能命名为php74-mcrypt这类带版本号的名称。可以用搜索命令确认:
yum search mcrypt
2. 检查并启用官方额外仓库
Amazon Linux 2提供了amazon-linux-extras工具,包含很多官方维护的额外软件包/仓库:
- 查看所有可用的额外仓库:
amazon-linux-extras list - 如果找到对应PHP版本的仓库,先启用它,再尝试安装:
sudo amazon-linux-extras enable php7.4 sudo yum clean metadata && sudo yum update
3. 尝试第三方可信仓库
如果官方仓库没有目标包,可以添加第三方稳定仓库(比如Remi仓库),但要注意选择和Amazon Linux 2兼容的版本,添加后再执行yum安装操作。
4. 考虑替代方案
由于mcrypt已经被PHP官方弃用(从PHP 7.2开始),如果不是业务必须依赖这个扩展,建议改用更安全的替代方案,比如PHP核心自带的openssl或sodium扩展,它们提供了更现代的加密功能。
5. 从源码编译安装
如果以上方法都不行,可以尝试从源码编译扩展:
- 从PECL官网下载mcrypt扩展的源码包
- 用
phpize生成编译配置,依次执行configure、make、make install完成安装 - 最后将扩展添加到php.ini并重启服务
内容的提问来源于stack exchange,提问作者Meekohi
相关产品推荐
相关产品推荐

