PHP 7.0.16安装Mcrypt扩展失败求助(AWS EC2环境)
解决AWS EC2上PHP 7.0.16 Mcrypt扩展加载失败与包冲突问题
你遇到的问题核心是PHP包源冲突——系统里同时混装了Amazon官方源的php70-*包和Webtatic源的php70w-*包,导致mcrypt扩展要么加载失败,要么安装时触发冲突。下面是分步解决的方案:
第一步:确认包源冲突情况
先执行这条命令,查看已安装的PHP相关包,确认是否存在跨源混装:
rpm -qa | grep php
如果输出里同时出现php70-common(Amazon官方源)和php70w-common(Webtatic源),那就是冲突的直接原因。
解决方案一:统一使用Webtatic源的Mcrypt扩展(推荐,保留现有php70w环境)
- 先卸载之前安装的Amazon源mcrypt包:
sudo yum remove php70-mcrypt -y
- 安装Webtatic源对应的mcrypt扩展:
sudo yum install php70w-mcrypt -y
- 重启Apache服务让配置生效:
sudo service httpd restart
- 验证扩展是否成功加载:
php -m | grep mcrypt
如果输出mcrypt,说明扩展已正常加载;也可以创建一个phpinfo.php文件,访问后查看页面中是否有mcrypt模块的信息。
解决方案二:切换到Amazon官方源的PHP环境(移除Webtatic源包)
如果你不需要Webtatic源的PHP包,可以彻底切换到Amazon官方源:
- 卸载所有Webtatic源的PHP包:
sudo yum remove php70w-* -y
- 重新安装Amazon官方源的PHP和mcrypt扩展:
sudo yum install php70 php70-mcrypt -y
- 重启Apache服务:
sudo service httpd restart
- 同样用
php -m | grep mcrypt验证扩展是否加载成功。
额外排查步骤(若以上方案仍不生效)
- 检查mcrypt扩展的配置文件:
查看/etc/php.d/目录下是否有mcrypt.ini文件,内容应包含:
extension=mcrypt.so
如果没有,可以手动创建这个文件并添加上述内容,然后重启Apache。
2. 检查扩展文件的权限:
执行命令确认mcrypt.so的权限是否正确:
ls -l /usr/lib64/php/modules/mcrypt.so
确保文件权限为rwxr-xr-x(yum安装通常会自动设置正确权限),如果权限异常,可执行chmod 755 /usr/lib64/php/modules/mcrypt.so修正。
内容的提问来源于stack exchange,提问作者Daniel Euchar
相关产品推荐
相关产品推荐

