centos 环境,php72 如何编译安装 mcrypt 扩展
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔想实验一下最新版本的某知识分享源码,但是居然被提示,需要开启mcrypt扩展。phpstudy里面没带这个扩展,宝塔面板里面php72也默认没有这个扩展。没辙,只好选择手工编译这个mcrypt扩展了。名字挺眼熟的,估计在以前的php里面,是标配吧。

顺便ps一下:php7.2.4的php源码的ext目录里面,也没有这个mcrypt扩展,估计也许是被世界都遗忘了吧。本文的测试环境是:centos7.5 + 宝塔面板 + php724。
下载扩展源码
网上的教程里面,都是说要到https://sourceforge.net/下载三个不同的源码:
Libmcryptmhashmcrypt
不过,苏南大叔没有这么操作,仅仅是在pecl网站这里下载的mcrypt,也编译成功了。可能是苏南大叔的centos服务器上面已经安装了相关类库了吧。下载地址是:

pecl网站上面的mcrypt和sourceforge上的mcrypt,应该是两个东西。sourceforge上的mcrypt,应该是本尊。pecl网站上面的mcrypt,应该只是个dll包装。

编译源码
苏南大叔cd到上述源码根目录下面后,因为目标php环境是宝塔面板的php72,所以,下面的命令中,会有所体现相关路径。请注意替换相关路径到您真实的php路径。如果没有正确cd到mcrypt-1.0.1源码根目录的话,就可能会看到如下错误提示:
Cannot find config.m4.
/www/server/php/72/bin/phpize
./configure --with-php-config=/www/server/php/72/bin/php-config
make && make install


编译完成后,我们就可以在对应扩展目录下面,看到编译好的mcrypt.so文件了。
cd /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/
ls
启用mcrypt.so
在php.ini中启用mcrypt.so即可。注意,编译好之后,需要重启php-fpm才能生效。
vi /www/server/php/72/etc/php.iniextension=mcrypt.so
最终效果
我们在phpinfo里面,看到的截图,如下图所示:mcrypt版本号为2.5.8,这个版本号应该指的是libmcrypt的版本号。

相关连接
- 《centos,php71如何编译安装tidy扩展》
https://newsn.net/say/centos-php71-tidy.html
- 《centos,php72如何编译安装yaml扩展》
https://newsn.net/say/centos-php72-yaml.html
注意事项
190616更新:可能php72是最后一个支持mcrypt.so的版本,php73下,即使编译成功,也依然没能生效。

小结
php的扩展编译过程,基本上套路都差不多,个别有所差异。只要找到对的源码,以及相关的关联lib扩展,开启相关扩展,还不是太大问题。
苏南大叔提示您:更多php相关文章,请点击这里查看:
支持苏南大叔