PHP 警告:模块“mcrypt”已加载

2022-08-30 21:38:47

当我使用PHP运行命令时,它会向我显示一个错误。例如,当我运行以查看我的PHP版本时,它会向我显示一个错误,然后显示有关PHP的信息:php -v

模块“mcrypt”已加载到未知的第 0 行

zied@ubuntu:~$ php -v

PHP Warning:  Module 'mcrypt' already loaded in Unknown on line 0

PHP 5.4.25-1+sury.org~quantal+2 (cli) (built: Feb 12 2014 11:11:30) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

答案 1

您的包含以下两行或更多行:php.ini

extension=mcrypt.so

除一个外,删除所有内容。

php.ini通常居住在 或 中。有时包含其他.ini文件,您可以使用以下命令查看所有文件:/etc/php.ini/etc/php5/php.ini

$ php -i | grep .ini\$
Loaded Configuration File => /usr/local/etc/php.ini
Additional .ini files parsed => /usr/local/etc/php/extensions.ini
user_ini.filename => .user.ini => .user.ini

答案 2

有时这种情况发生在 ,有趣的是,控制台不会在同一时间使用同一组.ini文件对此进行规划,从而证明实际上没有被引用两次。php-fpmphpmcrypt

事实证明, 有一组默认的内置模块,它试图加载, 至少在 Linux 上是这样(因为这在 FreeBSD 上是不可重现的)。 在此列表中,因此当用户在其目录中有其他.ini文件时,似乎加载了两次。php-fpmmcrypt/etc/php.dmcrypt

一个苛刻的解决方法是在开始时将开关添加到php-fpm,复制到a,将所有模块都包含到结果中,除了mcrypt之外,并添加一个指向正确ini文件的附加开关,因此整个添加看起来像:。-npnp.iniphp-fpm.iniphp-fpm.ini-n -c /etc/php-fpm.ini

这种方式跑步不会抱怨。php-fpm

我在这里写这个,因为这是搜索引擎中关于问题引用最多的帖子。我意识到源代码问题是关于控制台php的。mcrypt

更新:我正在使用这种解决方法,但它很讨厌。前段时间,我已经弄清楚了为什么会发生这种情况。我将用更多的词来描述这一点,但这可能很无聊,因为这将描述某种类型的失败。因此,在我的情况下,这个问题是由这样一个事实引起的,即我使用的是自己制作的自定义php构建,并且偶尔我将mcrypt添加到内置静态模块列表中。然后我再次将其添加为构建模块,因此它被加载了两次。当 mcrypt 在配置脚本的模块列表中被引用并且未列为共享时,自定义构建会发生这种情况(规范的这一部分可以很容易地找到,因为在规范中只提到过一次)。在我的情况下,解决方案是从配置部分完全删除mcrypt,并将其添加到和阶段。有人可能会问“fpm阶段怎么样?”-这是一个好问题,但是,事实证明,fpm sapi本身是用最少的模块构建的,并使用通用共享模块。%configure \build-cgibuild-ztscli


推荐