【问题标题】:How to install mcrypt on PHP 7.3.3 ubuntu如何在 PHP 7.3.3 ubuntu 上安装 mcrypt
【发布时间】:2019-09-04 18:38:45
【问题描述】:

我试图跟随: PHP Warning: PHP Startup: Unable to load dynamic library 'mcrypt.so'

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install php7.2-dev
sudo apt-get -y install libmcrypt-dev
sudo pecl install mcrypt-1.0.1

我明白了:

pecl/mcrypt requires PHP (version >= 7.2.0, version <= 7.3.0, excluded versions: 7.3.0), installed version is 7.3.3-1+ubuntu14.04.1+deb.sury.org+1
No valid packages found
install failed

我使用 prestashop 需要这个

【问题讨论】:

  • mcrypt 依赖于 libmcrypt,该 libmcrypt 自 2007 年以来已死并且一直无人维护。请改用 openssl
  • 分区 prestashop 以升级和远离 mcrypt,他们已经做了很多年但仍然没有这样做。我无法信任 prestashop,因为他们无法为他们的购物系统的如此重要部分做出简单的努力来改变图书馆。请记住,风险在于您运行使用已弃用的过时旧代码的软件。

标签: php mcrypt pecl


【解决方案1】:

如果有人使用带有 php7.3.10 的 AWS bitnami 安装,以下是具有适当文件路径的布局(下面列出的参考)

检查您的 PHP 版本

$ php -version

安装mcrypt扩展

$ sudo apt-get -y install gcc make autoconf libc-dev pkg-config
$ sudo apt-get -y install libmcrypt-dev

如果php版本> 7.3.0

$ sudo pecl install mcrypt-1.0.2

或最新版本:https://pecl.php.net/package/mcrypt

如果php版本
$ sudo pecl install mcrypt-1.0.1

当您看到提示时(按 [Enter] 自动检测)

> libmcrypt prefix? [autodetect] :

在 php.ini 中启用 mcrypt -> 检查 mcrypt 是否已经在 php.ini 中,可能只需要取消注释

$ more /opt/bitnami/php/etc/php.ini | grep mcrypt
;extension=mcrypt.so

在 php.ini 中添加或取消注释 extension=mcrypt.so

$ emacs /opt/bitnami/php/etc/php.ini

参考文献...

https://lukasmestan.com/install-mcrypt-extension-in-php7-2/

How to install mcrypt on PHP 7.3.3 ubuntu

https://stackoverflow.com/a/55678046/2298002

【讨论】:

  • 夫妇说明:(1)我需要安装 php7.3-dev 才能工作。 OP提到了它,但在任何答案中都没有提到它。另外,我更喜欢安装模块,例如:bash -c "echo extension=/path/to/mcrypt.so &gt; /etc/php/7.3/mods-available/mcrypt.ini" 然后phpenmod mcrypt
  • 对于它的价值,这是最好的答案,但需要更新为:如果 php 版本 >= 7.2.0,版本 = 7.2.0,版本
  • @stevenbranigan82 for php > 7.4 你需要安装下一个版本sudo pecl install mcrypt-1.0.3
【解决方案2】:

您必须安装版本 1.0.2。

错误信息明确告诉你 1.0.1 只支持 PHP 7.2,不支持 7.3。

都记录在案on the official pecl/mcrypt page

1.0.2 版:

PHP 版本:PHP 7.4.0 或更早版本

PHP 版本:PHP 7.2.0 或更新版本

PEAR 包:PEAR 1.4.0 或更新版本

1.0.1 版:

PHP 版本:PHP 7.3.0 或更早版本

PHP 版本:PHP 7.2.0 或更新版本

PEAR 包:PEAR 1.4.0 或更新版本

【讨论】:

【解决方案3】:

使用它,它在 php-7.3 中完美运行:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install libmcrypt-dev
sudo pecl install mcrypt-1.0.1

自动检测:按回车

sudo bash -c "echo extension=/usr/lib/php/[folder in your pc]/mcrypt.so > /etc/php/7.3/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/[folder in your pc]/mcrypt.so > /etc/php/7.3/apache2/conf.d/mcrypt.ini"

php -i | grep mcrypt

【讨论】:

  • 完成你的回答,必须这样做:sudo bash -c "echo extension=/usr/lib/php/[folder in your pc]/mcrypt.so &gt; /etc/php/7.3/mods-availabl e/mcrypt.ini" 所以,php 将能够找到模块。
【解决方案4】:

我在 PHP 版本:7.4.3 Ubuntu 版本:20.04.1 LTS 和 nginx 中解决了同样的问题

sudo apt-get install php-pear php7.4-dev
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install libmcrypt-dev

你可以根据php版本Read选择你的mcrypt版本

  sudo pecl install mcrypt-1.0.4

当你看到提示时

libmcrypt prefix? [autodetect] :

按 [Enter] 自动检测。

输出将是这样的。

Build process completed successfully
Installing '/usr/lib/php/20190902/mcrypt.so'
install ok: channel://pecl.php.net/mcrypt-1.0.4
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini

使用 pecl 成功安装 mcrypt 后,您应该在 php.ini 中添加 extension=/usr/lib/php/20190902/mcrypt.so 扩展。

我在下面的文件中添加了 extension=/usr/lib/php/20190902/mcrypt.so

  1. /etc/php/7.4/fpm/php.ini
  2. /etc/php/7.4/cli/php.ini

重启你的 nginx,因为我正在使用 nginx

systemctl restart nginx

你也可以重启php-fpm

sudo service php7.4-fpm restart

最后如何验证 mycrpt 是否安装(注意关闭终端并重新打开)

 php -m | grep mcrypt

【讨论】:

    猜你喜欢
    • 2018-02-03
    • 2020-05-23
    • 2012-01-06
    • 2013-06-11
    • 2013-08-27
    • 2011-11-06
    • 2018-04-21
    • 2016-06-18
    相关资源
    最近更新 更多