Centos

如何在雙 PHP 版本 CentOS 6 中安裝 mcrypt?

  • January 21, 2015

我通過這種方法在 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。我怎樣才能做到這一點?

我使用rpm2cpio將我找到的唯一合適的.rpm文件轉換為標準輸出的 cpio 存檔。

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

然後我將 mcrypt.so 和 mcrypt.ini 複製到 PHP 5.4 安裝的正確文件夾中。

瞧,mcrypt 現在可以工作了!

不幸的是,用於 php54 的 CentOS SCL 集合不包括 php54-mcrypt。

您可以獲取 php-mcrypt-5.4 的 SRPM 並修改規範以更改包名稱、安裝位置等。在其他人中,創建您自己的包(檢查rpmbuild)。

或者,您也可以使用rcollet的儲存庫作為替代方案。

引用自:https://serverfault.com/questions/622401