如何在PHP 7.3.3 ubuntu上安装mcrypt。
如何在PHP 7.3.3 ubuntu上安装mcrypt。
我尝试按照以下步骤进行操作:
PHP 警告:PHP 启动时无法加载动态库 '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 需要 PHP(版本 >= 7.2.0,版本 <= 7.3.0,排除版本:7.3.0),当前安装版本为 7.3.3-1+ubuntu14.04.1+deb.sury.org+1 未找到有效的软件包 安装失败
我使用的是需要此库的 PrestaShop。
问题出现的原因是在PHP 7.3.3版本的Ubuntu系统上安装mcrypt时遇到困难。下面是解决方法:
首先,需要安装一些必要的依赖项和工具:
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
然后,安装libmcrypt-dev:
sudo apt-get -y install libmcrypt-dev
接下来,使用pecl命令安装mcrypt扩展:
sudo pecl install mcrypt-1.0.1
安装完成后,需要在PHP配置中启用mcrypt扩展。可以通过以下命令在CLI和Apache2的配置中添加mcrypt扩展:
sudo bash -c "echo extension=/usr/lib/php/[your pc中的文件夹]/mcrypt.so > /etc/php/7.3/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/[your pc中的文件夹]/mcrypt.so > /etc/php/7.3/apache2/conf.d/mcrypt.ini"
最后,通过以下命令检查mcrypt扩展是否成功安装:
php -i | grep mcrypt
补充一点,还需要执行以下命令以便让PHP能够找到mcrypt模块:
sudo bash -c "echo extension=/usr/lib/php/[your pc中的文件夹]/mcrypt.so > /etc/php/7.3/mods-available/mcrypt.ini"
这样,就能成功在PHP 7.3.3版本的Ubuntu系统上安装mcrypt扩展了。
问题出现的原因是因为PHP 7.3.3的系统中没有安装mcrypt插件,而该插件只支持PHP 7.2及以下版本。解决方法是安装版本号为1.0.2的mcrypt插件。具体的步骤可以参考以下内容:
1. 打开官方的pecl/mcrypt页面,链接为https://pecl.php.net/package/mcrypt,里面有详细的文档说明。
2. 在文档中,可以找到Release 1.0.2和Release 1.0.1两个版本的信息。其中,Release 1.0.2支持PHP版本7.4.0及以前的版本,以及PHP版本7.2.0及更新的版本,需要安装PEAR版本1.4.0或更高版本。而Release 1.0.1则支持PHP版本7.3.0及以前的版本,以及PHP版本7.2.0及更新的版本,同样需要安装PEAR版本1.4.0或更高版本。
3. 在另外一个链接php.net/manual/en/migration71.deprecated.php中可以找到相关信息,这个页面提到了虽然可以安装mcrypt插件,但并不推荐使用,因为在加密数据方面存在安全问题。
4. 另外,还可以参考链接github.com/PrestaShop/PrestaShop/commit/…中的解决方案。然而需要注意的是,该方案仍然存在问题,因为它没有以安全的方式对加密数据进行填充和打包(如HMAC签名等)。
要在PHP 7.3.3的Ubuntu系统上安装mcrypt插件,需要安装版本号为1.0.2的mcrypt插件,并确认系统满足相关的PHP和PEAR版本要求。然而,鉴于mcrypt插件存在安全问题,建议不要使用该插件。
如何在PHP 7.3.3的Ubuntu上安装mcrypt的问题是由以下原因引起的:在使用AWS bitnami安装的php7.3.10时,需要安装mcrypt扩展,但是在默认安装中没有包含此扩展。
解决方法如下:
首先,检查PHP的版本:
$ php -version
然后,安装mcrypt扩展的依赖项:
$ sudo apt-get -y install gcc make autoconf libc-dev pkg-config $ sudo apt-get -y install libmcrypt-dev
接下来,根据PHP的版本选择安装mcrypt扩展的特定版本:
如果PHP版本大于7.3.0:
$ sudo pecl install mcrypt-1.0.2
或者安装最新版本:
$ sudo pecl install mcrypt-1.0.3
如果PHP版本小于或等于7.3.0:
$ sudo pecl install mcrypt-1.0.1
安装过程中会显示提示信息,需要按Enter键进行自动检测。
接下来,检查php.ini文件是否已经包含了mcrypt扩展,并取消注释:
$ more /opt/bitnami/php/etc/php.ini | grep mcrypt
如果存在以下行,则需要取消注释:
;extension=mcrypt.so
编辑php.ini文件并添加或取消注释以下行:
$ emacs /opt/bitnami/php/etc/php.ini
将下面这行添加或取消注释:
extension=mcrypt.so
参考链接:
- https://lukasmestan.com/install-mcrypt-extension-in-php7-2/
- https://stackoverflow.com/questions/55678023
- https://stackoverflow.com/a/55678046/2298002
注意事项:
- 在安装过程中,需要先安装php7.3-dev。
- 可以使用以下命令来安装模块:
bash -c "echo extension=/path/to/mcrypt.so > /etc/php/7.3/mods-available/mcrypt.ini"
然后运行:
phpenmod mcrypt
对于PHP版本大于7.4的情况,需要安装下一个版本的mcrypt:
sudo pecl install mcrypt-1.0.3