在Ubuntu 20.04 | 18.04上安装PHP MCRYPT扩展
时间:2020-02-23 14:44:51 来源:igfitidea点击:
“E: Package ‘php-mcrypt’ has no installation candidate”
如何解决 “E: Package ‘php-mcrypt’ has no installation candidate”
今天的教程将在Ubuntu 20.04/18.04上安装PHP MCrypt扩展。
PHP MCRYPT扩展是MCRYPT加密库的接口,它支持各种块算法,如DES,TripleDes,Blowfish(默认),3路,更安全-SK64,更安全的SK128,Twofish,Tea,RC2和CBC中的GOSTB,OFB,CFB和ECB密码模式。
如果我们尝试使用APT安装Mcrypt,则会收到错误:
$sudo apt install php-mcrypt Reading package lists... Done Building dependency tree Reading state information... Done Package php-mcrypt is not available, but is referred to by another package. This Jan mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'php-mcrypt' has no installation candidate
MCrypt扩展将移至PECL存储库,并且不再与PHP 7.2.0的PHP捆绑在一起。
PECL是所有已知的PHP扩展的存储库,用户可以下载和主机开发的PHP扩展。
告诉操作系统以提取安装库中可用的最新包列表:
sudo apt update
在Ubuntu上安装开发工具:
sudo apt update sudo apt install -y build-essential
确认制作和GCC:
$gcc --version gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $make --version GNU Make 4.2.1 Built for x86_64-pc-linux-gnu Copyright (C) 1988-2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
我们需要首先在Ubuntu 20.04 | 18.04上安装PHP,DEV和PEAR扩展。
sudo apt install php php-pear php-dev libmcrypt-dev
确认系统中可用的PECL命令。
$which pecl /usr/bin/pecl
PECL使用率:
$pecl help Commands: build Build an Extension From C Source bundle Unpacks a Pecl Package channel-add Add a Channel channel-alias Specify an alias to a channel name channel-delete Remove a Channel From the List channel-discover Initialize a Channel from its server channel-info Retrieve Information on a Channel channel-login Connects and authenticates to remote channel server channel-logout Logs out from the remote channel server channel-update Update an Existing Channel clear-cache Clear Web Services Cache config-create Create a Default configuration file config-get Show One Setting config-help Show Information About Setting config-set Change Setting config-show Show All Settings convert Convert a package.xml 1.0 to package.xml 2.0 format cvsdiff Run a "cvs diff" for all files in a package cvstag Set CVS Release Tag download Download Package download-all Downloads each available package from the default channel info Display information about a package install Install Package list List Installed Packages In The Default Channel list-all List All Packages list-channels List Available Channels list-files List Files In Installed Package list-upgrades List Available Upgrades login Connects and authenticates to remote server [Deprecated in favor of channel-login] logout Logs out from the remote server [Deprecated in favor of channel-logout] makerpm Builds an RPM spec file from a PEAR package package Build Package package-dependencies Show package dependencies package-validate Validate Package Consistency pickle Build PECL Package remote-info Information About Remote Packages remote-list List Remote Packages run-scripts Run Post-Install Scripts bundled with a package run-tests Run Regression Tests search Search remote package database shell-test Shell Script Test sign Sign a package distribution file svntag Set SVN Release Tag uninstall Un-install Package update-channels Update the Channel List upgrade Upgrade Package upgrade-all Upgrade All Packages [Deprecated in favor of calling upgrade with no parameters] Usage: pecl [options] command [command-options] <parameters> Type "pecl help options" to list all options. Type "pecl help shortcuts" to list all command shortcuts. Type "pecl help version" or "pecl version" to list version information. Type "pecl help <command>" to get the help for the specified command.
更新频道:
$sudo pecl channel-update pecl.php.net Updating channel "pecl.php.net" Update of Channel "pecl.php.net" succeeded $sudo pecl update-channels Updating channel "doc.php.net" Update of Channel "doc.php.net" succeeded Updating channel "pear.php.net" Update of Channel "pear.php.net" succeeded Updating channel "pecl.php.net" Channel "pecl.php.net" is up to date
让我们搜索mcrypt扩展。
$sudo pecl search mcrypt Matched packages, channel pecl.php.net: ======================================= Package Stable/(Latest) Local mcrypt 1.0.3 (stable) Bindings for the libmcrypt library mcrypt_filter 0.1.0 (beta) Applies mcrypt symmetric encryption using stream filters
我们可以使用PECL命令安装Mcrypt扩展名,使用"安装"选项。
$sudo pecl install mcrypt downloading mcrypt-1.0.3.tgz ... Starting to download mcrypt-1.0.3.tgz (33,590 bytes) .........done: 33,590 bytes 6 source files, building running: phpize Configuring for: PHP Api Version: 20190902 Zend Module Api No: 20190902 Zend Extension Api No: 320190902 ........
当你看到提示时
libmcrypt prefix? [autodetect] :
按Enter键自动检测。
我们应该在ubuntu 20.04 Linux机器上完成下面的输出,如下面完成Mcrypt扩展的安装。
Build process completed successfully Installing '/usr/lib/php/20190902/mcrypt.so' install ok: channel://pecl.php.net/mcrypt-1.0.3 configuration option "php_ini" is not set to php.ini location You should add "extension=mcrypt.so" to php.ini
在php.ini文件中启用扩展名。
Ubuntu 20.04:
$sudo vim /etc/php/7.4/cli/php.ini extension=mcrypt.so $sudo vim /etc/php/7.4/apache2/php.ini extension=mcrypt.so
Ubuntu 18.04:
$sudo vim /etc/php/7.2/cli/php.ini extension=mcrypt.so $sudo vim /etc/php/7.2/apache2/php.ini extension=mcrypt.so
我们可以确认使用命令已安装并启用该模块:
$php -m | grep mcrypt mcrypt
如果使用带有Apache或者Nginx Web服务器托管的应用程序重新启动它们。
--- Restart Apache web server -- $sudo systemctl restart apache2 --- Restart nginx web server -- $sudo systemctl restart nginx