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

在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也获得了最多的投票。 - mike stewart
供他人参考,对我来说,“最简单”的答案并没有起作用。php5enmod mcrypt使Apache停止响应。php5dismod mcrypt又使其恢复正常。我选择了被接受的答案,并修改了extension=..的路径,这次php5enmod mcrypt奏效了。因此,确实是全面的,应该成为被接受的答案。 - Oliver Williams
14个回答

试试只做这个:

sudo php5enmod mcrypt

然后:
sudo service apache2 restart 

我已经在我的电脑上安装了新的Ubuntu 14.04(桌面版本)。这种方法适用于启用已经安装的mcrypt。

5注意,如果你正在使用带有php5-fpm的nginx,则执行php5-fpm service restart(或者如果已经修补好了,则执行reload)。 - mike stewart
2这两个命令的作用是:第一行启用了名为'mcrypt'的模块,然后重新启动apache2以更新配置。您可以从/etc/apache2/mods-available中看到已启用的模块。享受LAMP生活 :) - kenju
sudo service apache2 reload就足够了,不需要实际重新启动(至少在14.04上是这样的,我已经尝试过了)。 - Jasper

试试这个:

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而不是反过来。 - AturSams
14对我来说,只需执行php5enmod mcrypt就可以顺利完成。 - Diosney
3运行php5enmod mcrypt将为您创建这些符号链接。无需手动操作(即可以跳过ln -s命令)。 - Serrano Pereira
1运行php5enmod mcrypt是正确的Ubuntu/Debian方式。尽管这个答案可以工作,但会比较麻烦,并不是最佳实践。 - mike stewart
1很多上述步骤都是不必要的。请参考@MURATSPLAT的回答。 - Raptor
我遇到的问题是,尽管在14.10版本中已经修复了这个问题,现在我们已经升级到了15.10版本。但是,在这个问题出现之前,根据我的情况,需要进行以下操作,因为链接已经损坏了。我猜测可能是因为在那个时期实施的轻微目录结构调整中,软件包没有考虑到较新的结构。 - matthapkidokarate
sudo apt-get install php5-mcrypt不会为mcrypt.ini文件创建符号链接,因此需要手动运行php5enmod mcrypt,然后重新启动服务器以使更改生效。 - Tojo Chacko
为什么如此天才! - Fareed Alnamrouti
非常感谢那些聪明的程序员大神们!感谢你们的存在!非常感谢! - Combine

安装PHP的mcrypt扩展,启用它,并重新启动Apache。以下是执行的命令:
sudo apt-get install mcrypt php5-mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart

1简单。完美。没有问题,至少对我来说在Ubuntu 14.04.1 LTS (trusty)上运行良好。 - Gor
它也适用于Ubuntu 14.10。 - Coca Akat
我建议你在第一行中不要包含 mcrypt。它作为 php5-mcrypt 的依赖隐式安装,但如果你明确安装它,apt-get 在你稍后选择卸载 php5-mcrypt 包时将不知道如何移除它。 - beldaz
@beldaz,至少有一台服务器上安装了php5-mcrypt,但由于缺少mcrypt,导致pnp模块无法启用,从而引发了Joomla安装问题。因此,对我来说,包括mcrypt是有意义的。 - tagMacher

php5-mcrypt Ubuntu软件包将配置文件mcrypt.ini安装到/etc/php5/conf.d/中,这是旧的PHP配置目录布局。
在PHP5中启用模块的当前工作方式是将ini文件放在/etc/php5/mods-available目录中。 然后,在PHP5中启用模块,您必须从/etc/php5/apache2/conf.d目录创建一个符号链接到相关的ini文件,以在使用Apache时启用模块,或者从/etc/php5/cli/conf.d目录创建符号链接,如果您希望在使用PHP时在Apache之外启用此模块,例如在命令行脚本或crontab中运行。
还要注意,在conf.d目录中,您可以通过在其前面放置一个数字来创建指向ini文件的链接,以便按特定顺序加载模块。当您需要根据另一个模块加载模块时,这非常有用。
当然,如果您已经为Apache启用了模块,请不要忘记重新启动Apache:

 sudo service apache2 restart

我的14.04服务器安装只需要(在安装了php5-mcrypt之后)
sudo php5enmod mcrypt
sudo service apache2 restart

如果问题仍然存在,
请通过添加以下内容启用模块: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
这个方法很有效,而且比被接受的答案简单多了... 而且当它更新时,被接受的答案也会出问题。 - 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

在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

使用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 restart sudo:/etc/init.d/apache2:找不到命令 - Yevgeniy Afanasyev

你应该能够通过运行以下命令安装 PHP 的 mcrypt 扩展:
sudo apt-get install php5-mcrypt

嗯,它说命令行已经正确安装了,但正如上面提到的,它在服务器上却不知怎么消失了。 - matthapkidokarate
1@jkt123:我注意到在Ubuntu中安装一些php模块(如php5-mcrypt)时,所有的文件都会存在,但是该模块没有在主PHP配置中启用。你必须像接受的答案中描述的那样手动激活它。 - Benoit
只有在php.ini中添加extension=mcrypt.so才能使其正常工作。 - Eric

对于那些在Ubuntu 16.04上(使用PHP7)遇到此问题的人,以下是我所做的步骤来启用mcrypt:
sudo apt-get install mcrypt php-mcrypt
sudo phpenmod mcrypt
sudo service apache2 restart