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

Posted

技术标签:

【中文标题】在 PHP 7.3.13 Ubuntu 上安装 mcrypt 时出现问题【英文标题】:Problem installing mcrypt on PHP 7.3.13 Ubuntu 【发布时间】:2020-05-23 10:03:02 【问题描述】:

这就是我一直在做的。

$ 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] :

我将“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"

我遵循了这些指示: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

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

我一直在用什么

https://websiteforstudents.com/install-php-7-2-mcrypt-module-on-ubuntu-18-04-lts/ Issue in installing php7.2-mcrypt https://gist.github.com/arzzen/1209aa4a430bd95db3090a3399e6c35f Howto ubuntu 18.04 install / activate PHP extension ext-mcrypt

【问题讨论】:

首先我会尝试安装 mcrypt 1.0.3,因为它现在是最新的稳定版。 /usr/lib/php/下还有其他文件夹吗? 好的。是 20131226 20151012 20160303 20170718 20180731 20190902 7.0 7.1 7.3 7.4 php-helper php-maintscript-helper sessionclean。有什么线索吗? 编译后的模块是否只进入“20190902”?也许它也在“20180731”中? 是的,看起来是这样。 mcrypt.so 在 2018 年和 2019 年都有。我应该在 2018 年删除那个吗? 或许您可以尝试使用extension=/usr/lib/php/20180731/mcrypt.so 的扩展名而不是extension=/usr/lib/php/20190902/mcrypt.so 【参考方案1】:

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

在我的情况下,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] :

问题仍然存在,在autodetect 中指定20180731

经过一些检查,我发现了问题: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

并重新安装了最新版本

pecl install mcrypt-1.0.2

就是这样。

注意:

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

【讨论】:

终于找到了一个很好的解决方案,我已经研究了好几个星期了!谢谢! 过去几天我一直在寻找这个解决方案。谢谢@Sim Sca 谢谢!我一直在使用 pecl 命令为 PHP7.4 安装 mcrypt,但是,它曾经在 Homestead 上给我错误,告诉我构建号不同,因为它默认使用 PHP8。更新替代命令是我的救命稻草。谢谢!

以上是关于在 PHP 7.3.13 Ubuntu 上安装 mcrypt 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu 16.04 上安装 LEMP 环境之图文向导

在 Ubuntu 16.04 上安装 LEMP 环境之图文向导

如何在ubuntu上安装php?

在 Ubuntu 上安装 PHP 5.4

在 ubuntu 上运行 php 脚本

在 PHP7 Apache/2.4.7 (Ubuntu) 上安装 phpmyadmin 时遇到问题