报错信息:
php和java项目之间交互,数据传递用到了crypt加解密
vendor('CryptAES.CryptAES'); $aes = new \CryptAES\CryptAES();
new的时候报错如下:
Fatal error: Call to undefined function CryptAES\mcrypt_module_open() in /Vendor/CryptAES/CryptAES.php on line 89
原因:
php -m | grep 'mcrypt'
找不到,mcrypt扩展,接下来开始安装扩展。
安装:
本来打算通过pecl来安装结果如下:
执行 pecl search mcrypt
来查找 mcrypt 扩展,顺利找到了如下:
Retrieving data...0%.Matched packages, channel pecl.php.net:=======================================Package Stable/(Latest) Localmcrypt 1.0.5 (stable) Bindings for the libmcrypt librarymcrypt_filter 0.1.0 (beta) Applies mcrypt symmetric encryption using stream filters
执行 pecl install mcrypt
来安装mcrypt 扩展,结果不尽人意,如下
pecl/mcrypt requires PHP (version >= 7.2.0, version <= 8.2.0, excluded versions: 8.2.0), installed version is 5.6.40No valid packages foundinstall failed
安装失败原因:
pecl/mcrypt需要PHP(版本>=7.2.0,版本<=8.2.0,排除版本:8.2.0),我本地已经安装使用的php版本为5.6.40
换个方式继续:
1.先查下本地php版本 php -v
PHP 5.6.40 (cli) (built: Jun 7 2022 17:46:34) Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
去php官网: link下载对应的php版本如下:
3.解压下载好的压缩包后进入php-5.6.40/ext/mcrypt
目录,执行 phpize
命令,如下:
Configuring for:PHP Api Version: 20131106Zend Module Api No: 20131226Zend Extension Api No: 220131226……省略若干,总之是没有报错,warning 忽略
执行 先执行 ./configure
再执行 make
命令
执行 make install
命令,结果如下:(扩展文件已经编译好,位置 在 /usr/local/Cellar/php@5.6/5.6.40_4/pecl/20131226/ 下有一个 mcrypt.so 文件)
Installing shared extensions: /usr/local/Cellar/php@5.6/5.6.40_4/pecl/20131226/
在php.ini中添加扩展配置如下:
7. 执行 brew services restart php@5.6
命令,重启php:
Stopping `php@5.6`... (might take a while)==> Successfully stopped `php@5.6` (label: homebrew.mxcl.php@5.6)==> Successfully started `php@5.6` (label: homebrew.mxcl.php@5.6)
执行 php -m | grep 'mcrypt'
找一下mcrypt扩展,找到了:
再次执行文章最开始的
new \CryptAES\CryptAES(); //不再报错了
总结
本文其实介绍了两种安装php扩展的方式,根据你的需要自己来决定怎么安装吧
- pecl install 方式
- 编译安装扩展 方式
写在最后
一直以下国内的技术博客,基本上都是 control + c, control +v ,水的一批,搜索引擎搜到的也是千篇一律,小弟不才,花了45分钟写了一篇自己解决问题的经历,如果有帮助到你,希望点赞收藏,原创不易,谢谢支持。
来源地址:https://blog.csdn.net/piayong/article/details/127055571