有时这种情况发生在 ,有趣的是,控制台不会在同一时间使用同一组.ini文件对此进行规划,从而证明实际上没有被引用两次。php-fpm
php
mcrypt
事实证明, 有一组默认的内置模块,它试图加载, 至少在 Linux 上是这样(因为这在 FreeBSD 上是不可重现的)。 在此列表中,因此当用户在其目录中有其他.ini文件时,似乎加载了两次。php-fpm
mcrypt
/etc/php.d
mcrypt
一个苛刻的解决方法是在开始时将开关添加到php-fpm,复制到a,将所有模块都包含到结果中,除了mcrypt之外,并添加一个指向正确ini文件的附加开关,因此整个添加看起来像:。-n
pnp.ini
php-fpm.ini
php-fpm.ini
-n -c /etc/php-fpm.ini
这种方式跑步不会抱怨。php-fpm
我在这里写这个,因为这是搜索引擎中关于问题引用最多的帖子。我意识到源代码问题是关于控制台php的。mcrypt
更新:我正在使用这种解决方法,但它很讨厌。前段时间,我已经弄清楚了为什么会发生这种情况。我将用更多的词来描述这一点,但这可能很无聊,因为这将描述某种类型的失败。因此,在我的情况下,这个问题是由这样一个事实引起的,即我使用的是自己制作的自定义php构建,并且偶尔我将mcrypt添加到内置静态模块列表中。然后我再次将其添加为构建模块,因此它被加载了两次。当 mcrypt 在配置脚本的模块列表中被引用并且未列为共享时,自定义构建会发生这种情况(规范的这一部分可以很容易地找到,因为在规范中只提到过一次)。在我的情况下,解决方案是从配置部分完全删除mcrypt,并将其添加到和阶段。有人可能会问“fpm阶段怎么样?”-这是一个好问题,但是,事实证明,fpm sapi本身是用最少的模块构建的,并使用通用共享模块。%configure \
build-cgi
build-ztscli