如何在双 PHP 版本 CentOS 6 中安装 mcrypt?

如何在双 PHP 版本 CentOS 6 中安装 mcrypt?

我通过这个在 CentOS 6.5 上安装了两个并行版本的 PHP方法

[root@host ~]# php -i | grep "PHP Version"
PHP Version => 5.3.3
[root@host ~]# /opt/rh/php54/root/usr/bin/php -i | grep "PHP Version"
PHP Version => 5.4.16

安装来自

[root@host ~]# rpm -q php php-mcrypt
php-5.3.3-27.el6_5.1.x86_64
php-mcrypt-5.3.3-3.el6.x86_64
[root@host ~]# rpm -q php54 php54-mcrypt
php54-1-7.el6.centos.alt.x86_64
package php54-mcrypt is not installed
[root@host ~]# rpm -q libmcrypt
libmcrypt-2.5.8-4.el6.art.x86_64
[root@host ~]# rpm -q libmcrypt-devel
libmcrypt-devel-2.5.8-4.el6.art.x86_64

在运行 PHP 5.3.3 的网站上,mcrypt 运行良好。我需要让运行 5.4.16 的网站可以使用 mcrypt。我自然尝试了yum install php54-mcrypt,但结果却返回了No package php54-mcrypt available.。以下存储库已启用:

asl-4.0 
base 
epel 
extras 
scl 
updates 
virtualmin 
virtualmin-universal

于是我搜索了一下 RPM,找到了这个。但是如果我尝试安装此 RPM,它会尝试更新当前的 PHP mcrypt,我需要继续为 5.3.3 上的站点运行它。我的印象是 php-mcrypt 需要与 php 版本完全相同,并且它不向后兼容。

我需要为 PHP 5.4.16 安装 mcrypt,其中 PHPZTS="" 和 PHPAPI=20100525。我该怎么做?

答案1

我用了rpm2cpio转换唯一合适的.rpm我发现文件放入了标准输出的 cpio 档案中。

$ rpm2cpio php-mcrypt-5.4.16-1.el6.x86_64.rpm | cpio -idmv

然后我将 mcrypt.so 和 mcrypt.ini 复制到适合 PHP 5.4 安装的文件夹中。

瞧!mcrypt 现在可以工作了!

答案2

不幸的是,php54 的 CentOS SCL 集合不包含 php54-mcrypt。

您可以获取 php-mcrypt-5.4 的 SRPM 并修改规范以更改包名称、安装位置等。在其他情况下,创建您自己的包(检查rpmbuild)。

或者你也可以使用夹头的存储库作为替代方案。

相关内容