在 PHP 7.3.13 Ubuntu 上安装 mcrypt 时出现问题

Nic*_*son 8 php mcrypt ubuntu-18.04

这就是我一直在做的事情。

$ sudo apt-get -y install gcc make autoconf libc-dev pkg-config
$ sudo apt-get -y install libmcrypt-de
$ sudo pecl install mcrypt-1.0.2
> libmcrypt prefix? [autodetect] :
Run Code Online (Sandbox Code Playgroud)

我将“extension=mcrypt.so”添加到 php.ini

那我就做

sudo bash -c "echo extension=/usr/lib/php/20190902/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20190902/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"
Run Code Online (Sandbox Code Playgroud)

我遵循了这些说明:https://lukasmestan.com/install-mcrypt-extension-in-php7-2/

最后我检查一下php -i | grep mcrypt

这是我的输出:

PHP Warning:  PHP Startup: mcrypt: Unable to initialize module
Module compiled with module API=20190902
PHP    compiled with module API=20180731
These options need to match
 in Unknown on line 0
/etc/php/7.3/cli/conf.d/20-mcrypt.ini,
/etc/php/7.3/cli/conf.d/mcrypt.ini
Run Code Online (Sandbox Code Playgroud)

我检查了 20-mcrypt.ini 和 mcrypt.ini,它们看起来完全一样。但我的 PHP 似乎是用错误的模块 API 编译的。我用谷歌搜索了一下,但找不到任何具体的内容。有任何想法吗?谢谢!

在此输入图像描述

我一直在使用什么

Sim*_*Sca 9

我找到了同样问题的解决方案。

在我的情况下pecl install mcrypt-1.0.2显示类似

...
running: phpize
Configuring for:
PHP Api Version:         20190902
Zend Module Api No:      20190902
Zend Extension Api No:   320190902
libmcrypt prefix? [autodetect] :
Run Code Online (Sandbox Code Playgroud)

并且问题仍然存在,也指定20180731autodetect.

一些检查后,我已经想通了这个问题:PHP CLI运行PHP的7.3,所以我认为,良好的配置,但二者phpizephp-config链接到PHP 7.4!

所以你只需要启动以下内容:

sudo update-alternatives --set phpize /usr/bin/phpize7.3
sudo update-alternatives --set php /usr/bin/php7.3
sudo update-alternatives --set php-config /usr/bin/php-config7.3
Run Code Online (Sandbox Code Playgroud)

并重新安装了最新版本

pecl install mcrypt-1.0.2
Run Code Online (Sandbox Code Playgroud)

就这样。

笔记:

  1. 最终pecl uninstall mcrypt在安装正确版本之前运行
  2. 如果没有找到phpize7.3and php-config7.3,请尝试通过安装apt-get install php7.3-dev

  • 终于有了一个好的解决方案,我已经研究了好几个星期了!谢谢! (2认同)