PHP扩展安装mcrypt 提示没有可用包(No package php-mcrypt available)
一、用CentOS的朋友基本在安装软件的时候默认都会想到用yum安装省事省时而且不会有错不需要担心依赖问题。
php大部分的扩展都是可以再yum源里安装的,但是部分扩展是没有的,需要安装epel-release这个扩展更新包。
1 2 3 |
yum install epel-release //扩展包更新包 yum update //更新yum源,这里有一个问题 update 和upgrade 有什么却别呢。这里补充下有的人知道就略过不知道的提高一下知识储备。update会更新kernel 但是upgrade不会。有朋友更新系统如果不需要更新内核就执行upgrade即可。 yum install libmcrypt libmcrypt-devel mcrypt mhash 就ok了 |
二、也可以编译安装,虽然麻烦,但是编译的好处也是很多的,而且这个过程也是一个运维人的必修课
http://www.sourceforge.net下载Libmcrypt,mhash,mcrypt安装包
libmcrypt(libmcrypt-2.5.8.tar.gz )、mcrypt(mcrypt-2.6.8.tar.gz )、 mhash(mhash-0.9.9.9.tar.gz );
1 .先安装Libmcrypt
1 2 3 4 5 |
#tar -zxvf libmcrypt-2.5.8.tar.gz #cd libmcrypt-2.5.8 #./configure #make #make install 说明:libmcript默认安装在/usr/local |
2.安装mhash、
1 2 3 4 5 |
#tar -zxvf mhash-0.9.9.9.tar.gz #cd mhash-0.9.9.9 #./configure #make #make install |
3.安装mcrypt
1 2 3 4 5 |
#tar -zxvf mcrypt-2.6.8.tar.gz #cd mcrypt-2.6.8 #LD_LIBRARY_PATH=/usr/local/lib ./configure #make #make install |
三、在php中增加mcrypt的更新(动态加载编译)
实际上你做到上述的是远远不够的。无论你是yum安装上了还是编译装mcrypt 你在phpinfo里或者php -m 都还是看不到这个扩展,因为你还需要在php的配置文件里在配置下(我原来的php环境是yum安装的,所以php.ini的文件配置方式是不一样的。如果编译装的话 会有单独php.ini)。
下载php下的mcrypt扩展或者直接下载php的完整安装包(这里需要用到php的环境,所以需要去php的网站下载一个php的包用下,不论你的lamp环境是否yum安装)
http://cn.php.net/releases/ 网页下找到自己服务器的php版本,下载后tar解压(我的是php5.3.3)
进入ext/mcrypt文件夹
1 2 3 4 5 6 7 8 9 |
#这里要先装几个环境防止后面用到的东西可能没有,gcc是后面编译要用 php-devel是安装phpize这个命令用来动态扩展用的 [root@localhost ~]#yum install gcc php-devel -y [root@localhost ~]# wget http://museum.php.net/php5/php-5.3.3.tar.gz [root@localhost ~]# mv php-5.3.3.tar.gz /usr/local/src [root@localhost ~]# cd !$ [root@localhost src]# tar -zvxf php-5.3.3.tar.gz [root@localhost src]# cd php-5.3.3/ext/mcrypt/ # 这里进入mcrypt后ls一下 看下这个目录的下的config文件数量,后面会有一个对比 [root@localhost mcrypt]#ls |
执行phpize命令(phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,上面已经安装)
1 2 3 4 5 6 7 |
[root@localhost mcrypt]# whereis phpize //为了确定phpize存在 phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz [root@localhost mcrypt]# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 |
执行完后,会发现当前目录下多了一些configure文件,最后执行php-config命令就基本完成了
执行以下命令,确保你的/usr/bin/php-config是存在的
1 2 3 |
[root@localhost mcrypt]# whereis php-config php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz [root@localhost mcrypt]# ./configure --with-php-config=/usr/bin/php-config |
执行以下命令
1 |
[root@localhost mcrypt]# make && make install |
最后的最后,会提示你如下,说明你大功告成了
1 |
Installing shared extensions: /usr/lib64/php/modules/ |
顺便检查下/usr/lib64/php/modules/里的mrcypt.so扩展是否已经创建成功
然后的事就简单了,给你的php.ini添加一条extension=mcrypt.so
1 |
[root@localhost mcrypt]# cd /etc/php.d |
创建一个mrcypt.ini文件
1 |
[root@localhost php.d]# echo 'extension=mcrypt.so' > mcrypt.ini |
四、重启apache,查阅phpinfo,mcrypt模块扩展已经加载