mac 安装 php5.6 扩展 mcrypt

mac 安装 php5.6 扩展 mcrypt

报错信息:

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) Local
mcrypt        1.0.5 (stable)        Bindings for the libmcrypt library
mcrypt_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.40
No valid packages found
install 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 Group
Zend 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

2.去php官网: link下载对应的php版本如下:

在我习惯使用tar包,所以下载tar.gz的包

3.解压下载好的压缩包后进入php-5.6.40/ext/mcrypt 目录,执行 phpize命令,如下:

Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
……省略若干,总之是没有报错,warning 忽略

4.执行 先执行 ./configure 再执行 make 命令

5.执行 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/

6.在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扩展的方式,根据你的需要自己来决定怎么安装吧

  1. pecl install 方式
  2. 编译安装扩展 方式

写在最后

一直以下国内的技术博客,基本上都是 control + c, control +v ,水的一批,搜索引擎搜到的也是千篇一律,小弟不才,花了45分钟写了一篇自己解决问题的经历,如果有帮助到你,希望点赞收藏,原创不易,谢谢支持。

                       

点击阅读全文

上一篇 2023年 6月 11日 am10:37
下一篇 2023年 6月 11日 am10:38