MySQL的14.04服务器中缺少Mcrypt扩展


112

ubuntu 14.04上的php mcrypt扩展名表明它已正确安装,但是phpmyadmin说:

 The mcrypt extension is missing. Please check your PHP configuration.

我当前的php配置在这里。如果您需要更多信息,请通过评论与我联系。

$ sudo apt-get install php5-mcrypt
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    php5-mcrypt is already the newest version.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

7
公认的答案不是最佳实践。在最简单的,和正确答案:http://askubuntu.com/a/477608/139249也拥有最多票数。
迈克·斯图尔特

供其他人参考,“最简单”的答案对我不起作用。 php5enmod mcrypt冻结了Apache。 php5dismod mcrypt再次释放它。我接受了公认的答案,并修改了路径extension=..,这次php5enmod mcrypt工作了。是的,它很全面,应该是公认的答案。
奥利弗·威廉姆斯

Answers:


138

尝试这个:

sudo updatedb 
locate mcrypt.ini

应该显示它位于/ etc / php5 / mods-available

locate mcrypt.so

编辑mcrypt.ini并更改扩展名以匹配mcrypt.so的路径,例如:

extension=/usr/lib/php5/20121212/mcrypt.so

现在这个:

sudo php5enmod mcrypt - (optional since its already enabled during phpmyadmin setup)

验证此处是否存在新文件(应从上面的问题中自动创建它们)

ls -al /etc/php5/cli/conf.d/20-mcrypt.ini
ls -al /etc/php5/apache2/conf.d/20-mcrypt.ini

否则请执行以下操作

立即创建符号链接

sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/cli/conf.d/20-mcrypt.ini
sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.ini

重新启动Apache

sudo service apache2 restart

重新启动php5或php5-fpm

sudo service php5 restart

错了!我认为您的意思是: sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini 并非相反。
wolfdawn 2014年

14
这样做php5enmod mcrypt对我来说很顺利。
diosney

3
运行php5enmod mcrypt将为您创建这些符号链接。无需手动执行此操作(即,您可以跳过ln -s命令)。
塞拉诺2015年

1
运行php5enmod mcrypt是正确的Ubuntu / Debian方式。这个答案虽然会起作用,但很麻烦,不是最佳实践。
迈克·斯图尔特

1
上面的许多步骤都是不必要的。请参阅@MURATSPLAT的答案。
Raptor

155

尝试只是这样做:

sudo php5enmod mcrypt

接着:

sudo service apache2 restart 

我已经在计算机上安装了全新的Ubuntu 14.04(台式机版本)。这种方法适用于启用已安装的mcrypt。


5
请注意,如果您正在使用php5-fpm 运行nginx-那么php5-fpm service restart(或重新加载(如果最终已修补))
Mike Stewart 2015年

2
这两个命令的作用是:第一行启用名为“ mcrypt”的模块,然后重新启动apache2以更新配置。您可以从看到启用的模块/etc/apache2/mods-available。享受灯生活:)
itiskj 2015年

sudo service apache2 reload足够了,不需要实际的重新启动(无论如何,在14.04上,这就是我尝试过的时间)
Jasper

55

安装mcryptPHP扩展名,启用它,然后重新启动Apache。以下是要执行的命令:

sudo apt-get install mcrypt php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart

1
简单。完善。毫无问题,至少对我而言,在Ubuntu 14.04.1 LTS(可信任)上有效
Gor

它也在ubuntu 14.10上工作
可口可乐Akat 2015年

我建议您不要mcrypt在第一行中加入。它作为的依赖项隐式安装php5-mcrypt,但是如果您显式安装它,则apt-get将不知道将其删除,如果您以后选择卸载该ph5-mcrypt软件包。
beldaz

@beldaz至少有一台服务器按照apt-get安装了php5-mcrypt,但缺少mcrypt,因为未启用哪个pnp模块导致joomla安装问题。所以包含mcrypt对我来说很有意义。
tagMacher

6

PHP5-mcrypt的 Ubuntu的软件包安装配置文件mcrypt.ini/etc/php5/conf.d/这是旧的PHP config目录布局。

在PHP5中启用模块的当前工作方式是将ini文件放在/etc/php5/mods-available目录中。然后,要在PHP5中启用该模块,必须在目录中创建指向相关ini文件的符号链接,以在/etc/php5/apache2/conf.d在Apache或/下使用PHP时启用该模块,以及在/etc/php5/cli/conf.d外部使用PHP时要启用该模块。 Apache,以脚本形式在命令行或crontab中运行。

还要注意,在conf.d目录中,您可以通过在ini文件前面放置一个数字来创建指向ini文件的链接,以按特定顺序加载模块。当您需要加载另一个模块时有用。

当然,如果您为Apache启用了模块,请不要忘记重启Apache:

 sudo service apache2 restart

4

仅需要安装我的14.04服务器(安装php5-mcrypt之后)

sudo php5enmod mcrypt
sudo service apache2 restart

3

如果问题仍然存在,

通过添加以下内容extension=mcrypt.so来启用模块:

/etc/php5/cli/php.ini

/etc/php5/apache2/php.ini


1
对我来说,在安装mcrypt之后添加'extension = mcrypt.so'是可行的。Lubuntu 14.04 Trusty Thar
Clain Dsilva 2015年

这有效,并且比接受的答案更简单...更新时也会中断。
埃里克(Eric)

我在这里和其他地方都遵循了所有指示,但徒劳无功。ubuntu 14.04.3-PHP 5.5.9-1ubuntu4.14-nginx / 1.8.1-服务器版本:5.7.10-MySQL-数据库客户端版本:libmysql-5.5.47-phpMyAdmin版本:4.0.10deb1 ....有人有主意吗?
Jadeye

2

在Ubuntu 16.04 LTS中,要使用php 5.6启用mcrypt模块:

sudo apt-get install mcrypt
sudo apt-get install php5.6-mcrypt
sudo phpenmod mcrypt

或使用php 7.0:

sudo apt-get install mcrypt
sudo apt-get install php7.0-mcrypt
sudo phpenmod mcrypt

接着

sudo service apache2 restart

1

使用PHP 7

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt
sudo /etc/init.d/apache2 restart

$ sudo phpenmod mcrypt警告:/etc/php/7.1/mods-available下模块mcrypt的ini文件不存在
Yevgeniy Afanasyev

$ sudo /etc/init.d/apache2重新启动sudo:/etc/init.d/apache2:找不到命令
Yevgeniy Afanasyev

0

您应该能够通过运行以下命令为PHP安装mcrypt扩展:

sudo apt-get install php5-mcrypt

好吧,它说它(命令行)已正确安装,但是如上所述,它在服务器中丢失了
matthapkidokarate 2014年

1
@ jkt123:我注意到,当您在Ubuntu中安装某些php模块(如php5-mcrypt)时,所有文件都在此之后,但是在主PHP配置中未启用该模块。您必须像接受的答案中所述手动激活它。
Benoit 2014年

它不不添加扩展= mcrypt.so工作为php.ini
埃里克

0

请注意,在Ubuntu 14.04中,php5-mcrypt位于可以被禁用的Universe存储库中。在这种情况下,要安装它,必须使用以下方法启用存储库:

sudo add-apt-repository universe


0

这是在Ubuntu 14.04服务器上添加php 5.5 mcrypt扩展的最佳方法

sudo apt-get install php5-mcrypt
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
sudo php5enmod mcrypt 
sudo service apache2 restart

0

@Kevsin的答案对我有用,但是我必须运行mkdir -p /etc/php5/apache2/conf.d/并手动运行sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.ini才能开始工作。sudo php5enmod mcrypt对于第一个符号链接工作正常。

注意:我正在运行PHP5-FPM。那可能就是不同了。


0

对于那些发现此问题的人,对于Ubuntu 16.04(使用PHP7),这是启用mcrypt的工作:

sudo apt-get install mcrypt php-mcrypt
sudo phpenmod mcrypt
sudo service apache2 restart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.