Ubuntu 升级到 13.10 后 mCrypt 不存在

Posted

技术标签:

【中文标题】Ubuntu 升级到 13.10 后 mCrypt 不存在【英文标题】:mCrypt not present after Ubuntu upgrade to 13.10 【发布时间】:2013-10-27 02:54:31 【问题描述】:

在我将系统从 Ubuntu 13.04 升级到 13.10 后,apache、mysqlphp 配置出现了几个问题。

我解决了其中的大部分问题,但我似乎无法让 mCrypt 库正常工作。 软件包已安装,所以我不需要 apt-get 它。服务器工作正常,一切似乎都很好,但是当我尝试使用 Laravel 4 运行 php artisan serve 时,我收到一条消息,提示需要 mCrypt。

我做了php --ri mcrypt,输出是Extension 'mcrypt' not present. 我试过把extension=mcrypt.so 放到/etc/php5/apache2/php.ini,但是没有用。

有什么想法吗?

dpkg --get-selections | grep php5的输出

libapache2-mod-php5         install
php5                        install
php5-cli                    install
php5-common                 install
php5-gd                     install
php5-json                   install
php5-mcrypt                 install
php5-mysql                  install
php5-readline               install

【问题讨论】:

确定安装了吗dpkg --get-selections | grep php5 apt-get install php5-mcrypt ? 我用@tlenss 命令的输出更新了问题。 sudo apt-get install php5-mcrypt 输出它已安装和最新版本 或许这里的答案会对你有所帮助askubuntu.com/questions/360646/… 在该页面上发现了启动板错误,该错误为我提供了解决方案。谢谢 【参考方案1】:

我想我在launchpad.net 找到了解决方案。

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

这对我有用。

【讨论】:

感谢您的回答,在 OpenCart 1.5.6 中,此问题导致了错误... 致命错误:在 //system/library/encryption 中调用未定义的函数 mcrypt_create_iv()。 php 在第 8 行 值得注意的是,在我在 /etc/php5/cli/conf.d 中进行符号链接之前,此解决方案不适用于 Laravel/Artisan 我收到此错误。我必须更新哪些代码?我需要在哪个文件中更新?请建议.. 这导致 Webgility 无法同步。安装它很好地修复了它。谢谢! 在 Ubuntu 14.04/PHP5.5 中不需要第一行。 php5enmod 建立链接。【参考方案2】:

如果软件包已经安装,另一种解决方案:

sudo aptitude reinstall php5-mycript

升级后这对我有用

【讨论】:

【参考方案3】:

我在安装 Ubuntu 14.04 后也遇到了这个问题。

首先启用mcrypt

sudo gedit /etc/php5/apache2/php.ini

在任意行添加此命令

extension=mcrypt.so

在 /etc/php5 中创建 conf.d 文件夹

sudo mkdir conf.d

并在该文件夹中创建 mcrypt.ini 文件

sudo gedit mcrypt.ini 

然后将此命令添加到该文件中

extension=mcrypt.so

然后创建一个指向文件的链接

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

启用 mcrypt 模块

sudo php5enmod mcrypt

重启apache

sudo service apache2 restart

【讨论】:

php.ini 中不需要extension=mcrypt.so。没有它也可以工作,因为 php 扩展(如 mcrypt)位于单独的 .ini 文件中。 @machineaddict 对我来说,在安装 mcrypt 后添加“extension=mcrypt.so”就可以了。 Lubuntu 14.04 值得信赖的塔尔。我没有自动加载【参考方案4】:

我在使用 Ubuntu 14.04 时遇到了这个问题,我采取了以下措施来解决它:

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

sudo service apache2 restart

【讨论】:

这对我有用,我有 PHP 版本 5.5.9-1ubuntu4.4,我没有 /etc/php5/conf.d 目录。【参考方案5】:

从 Ubuntu 13.10 到 14.04:

sudo php5enmod mcrypt
sudo service apache2 restart

为我工作。

【讨论】:

对我来说:WARNING: Module mcrypt ini file doesn't exist under /etc/php5/mods-available。但是,该文件位于其他地方。 sudo cp /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/ 并运行上面的命令。取自www.devraju.com【参考方案6】:

试试这个代码:

ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/apache2/conf.d/20-mcrypt.ini
service apache2 restart

【讨论】:

【参考方案7】:

我在 Mac OS X Yosemite 上运行 PHP 5.5.14 时遇到了同样的问题。我试图安装 Laravel 5.0。当我尝试创建一个新项目时,出现如下错误(即使我尝试使用 php artisan serve

启动 laravel 服务器
Alejandros-MacBook-Pro:Documents Lexynux$ laravel new blog
Crafting application...
PHP Notice:  Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128' in /Library/WebServer/Documents/blog/config/app.php on line 83
PHP Notice:  Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128' in /Library/WebServer/Documents/blog/config/app.php on line 83
Generating optimized class loader
Compiling common classes
Compiling views
PHP Notice:  Use of undefined constant MCRYPT_RIJNDAEL_128 - assumed 'MCRYPT_RIJNDAEL_128' in /Library/WebServer/Documents/blog/config/app.php on line 83
Application key [CCOPocoMjnJTx4AFXk64wqyTKyo3BlHq] set successfully.
Application ready! Build something amazing.
Alejandros-MacBook-Pro:Documents Lexynux$ 

所以我只是用 nano 编辑器在我的 php.ini 文件末尾添加了以下行:

extension=mcrypt.so
sudo nano /etc/php.ini

最后只需重启终端并重启 laravel 应用服务器

php artisan serve

而且效果很好!

【讨论】:

【参考方案8】:

刚刚在 php.net 上找到

注意,对于 Ubuntu,简单地安装 php5-mcrypt 并不能让 mcrypt 工作。您需要以 root 身份执行以下命令才能启用它:

apt-get install php5-mcrypt
mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
php5enmod mcrypt
service apache2 restart

http://php.net/manual/en/mcrypt.installation.php#114609

【讨论】:

【参考方案9】:

有时,出现此“问题”是因为您在本地计算机上而不是在虚拟机上输入了工匠命令。如果你使用 Homestead,mcrypt 已经安装好了。将其视为对homestead ssh的提醒

【讨论】:

【参考方案10】:

我在使用 Ubuntu 14.04 和 nginx 时也遇到了这个问题,但是我的提示是重新启动 FPM 服务,所以我这样做了:

安装库

apt-get 安装 php5-mcrypt

寻找路径

updatedb && 定位 mcrypt.so

在位于 /etc/php5/mods-available/mcrypt.ini 的 mcrypt.ini 文件中设置 mcrypt.so 的路径

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

然后重启FPM服务

服务 php5-fpm 重启

【讨论】:

我只需要在我的 ubuntu 14.04 上 apt-get install php5-mcrypt 和 service php5-fpm restart 即可。 很好..在我的情况下,需要手动查找 mcrypt 库,因为 mcrypt.ini 文件中的扩展名是空的。

以上是关于Ubuntu 升级到 13.10 后 mCrypt 不存在的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Ubuntu 13.10 后,Apache 上的 laravel 项目出现 403 错误

升级到 Ubuntu 13.10 后 Apache 不使用 DocumentRoot(使用显示“它可以工作!”的默认页面)

ubuntu13.10升级到ubuntu14.04

Mcrypt 无法处理新的 ubuntu 设置

Ubuntu13.10:[3]如何开启SSH SERVER服务

解决更新到 Ubuntu 13.10 和 apache 2.4 后默认站点不存在的错误