加密库需要 Mcrypt 扩展。

8
我有一个使用Codeigniter框架编写的PHP应用程序。当我尝试在Windows机器上运行此应用程序时,会出现以下错误:
“遇到了一个错误 加密库需要Mcrypt扩展。”
相同的应用程序在某些随机的具有相同配置的Windows机器上正常工作。我已经在5台不同的Windows 10机器上尝试过,并在3台机器上出现了这个错误,在2台机器上工作正常。我在所有机器上都使用了相同的安装程序来安装XAMPP和相同的代码,但仍然不知道如何使其顺利运行。 我已经尝试了几乎所有可用的在线建议,例如更改php.ini文件,但到目前为止都没有成功。

因此,请安装(或启用)扩展。这是你应该搜索过的东西。 - tereško
4
请注意,mcrypt 在 PHP 7.1 版本中已被弃用,并在 PHP 7.2 版本中被移除 - SpacePhoenix
我正在使用 PHP 版本 7.2.4。如果可能的话,您能否提供解决方法建议? - Rahul Kumar Singh
可能是php错误:Encrypt库需要在CodeIgniter中使用Mcrypt扩展的重复问题。 - kunal shaktawat
12个回答

15

(仅限CI用户)如果您从CI2 XAMPP(php5)切换到XAMPP(php7),请将encrypt.php粘贴到CI->system->libraries文件夹中,之后就应该没问题了!


它也适用于非XAMPP配置,但我没有复制该文件,而是在我的应用程序侧面进行了适当的更正。 - Grzegorz Adam Kowalski
这个已经起作用了,但是我无法确定你改变了什么,因为这个文件存在于文件夹中。只是替换了它的内容。 - Neri

11

对于未来的读者,我也遇到过这个问题。通常是php 7.2的问题。

只需在autoload.php中用encryption替换encrypt即可。

$autoload['libraries'] = array('database', 'email', 'session', 'encrypt', 'pagination');

$autoload['libraries'] = array('database', 'email', 'session', '**encryption**', 'pagination');

4
CodeIgniter 开发人员的提示:一些 CI 版本中未在 autoload 中列出 encrypt
$autoload['libraries'] = array();

相反,它们加载在派生自CI_Controller的控制器下。

搜索

$this->load->library('encrypt');

替换为:

$this->load->library('encryption');

0

你可以通过禁用来绕过 mbstring

$config['sess_encrypt_cookie'] = TRUE;

在 config.php 文件中。


0

在 Linux 上,如果使用 PHP 5.6 或更低版本...

apt-get install php5-mcrypt


0

0

将 Encrypt.php 中的 Pushpendra Kumar 替换后,别忘记设置:
$config['encryption_key'] = 'encryption_key';


-1
运行以下代码以检查您的 PHP 设置中是否启用了 mccrypt。
<?php phpinfo(); ?>

默认情况下,某些服务器已启用它,这就是为什么它在随机机器上运行的原因。

在Windows服务器上启用php-mcrypt的最快方法 - 您需要做的就是:

  • 找到php.ini(主要的php配置文件)

  • 打开并搜索;extension=php_mcrypt.dll)

  • 取消注释/删除“;”并保存php.ini


mccrypt未在我遇到错误的计算机上启用。 那么,我需要启用它吗?如果需要,该如何启用? - Rahul Kumar Singh
请问您能告诉我启用它的步骤吗? - Rahul Kumar Singh
如果您可以访问php.ini文件,那么您应该能够启用它。您可能需要取消注释php.ini中与其相关的某行,即通过删除该行前面的分号来实现。 - spoofie
@RahulKumarSingh 更新了启用扩展的答案。 - pspatel

-1

对于 Windows 用户

autoload.php 文件将如下所示

$autoload['libraries'] = array('database', 'session', 'form_validation', 'encrypt', 'template', 'finediff', 'parser');

从上面的代码中删除加密功能,然后重新启动 Apache 服务即可解决问题...

$autoload['libraries'] = array('database', 'session', 'form_validation', 'template', 'finediff', 'parser');


这并没有解决问题,因为您只是从$autoload[libraries]数组中删除了加密库。 - Charles

-1
打开php.ini文件
搜索";extension=php_mcrypt.dll"
然后删除前面的;以取消注释。
保存php.ini文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接