有时候,这是与php-fpm
,而有趣的是,控制台php
不complans这个使用相同的一组在同一时间的.ini,文件,证明mcrypt
其实没有被引用两次。
事实证明,php-fpm
有一个默认的内置模块,至少在Linux上(因为它在FreeBSD上不可重现),它试图加载。 mcrypt
位于此列表中,因此当用户在/etc/php.d
目录中具有其他.ini文件时,mcrypt
似乎已加载两次。
这方面的一个苛刻的解决方法是添加-n
开关对启动PHP-FPM,复制pnp.ini
到php-fpm.ini
,包括所有的模块到所得php-fpm.ini
除了mcrypt的和添加额外的开关指向正确的ini文件,因此整个添加如下所示:-n -c /etc/php-fpm.ini
。
这种方式运行php-fpm
不会抱怨。
我在这里写这篇文章,因为这是在搜索引擎中最引用的帖子,关于mcrypt
问题。我意识到源代码问题是关于控制台的PHP。
更新:我正在使用此解决方法,但它是讨厌的。前一段时间,我已经弄清楚为什么会发生这种情况。我会花更多的话来描述这一点,但这可能很无聊,因为这将描述某种类型的故障。因此,在我的情况下,这个问题是由于我使用由我自己制作的自定义php版本造成的,偶尔我已将mcrypt添加到内置静态模块的列表中。和然后我再次添加它作为内置模块,所以它被加载两次。这发生在自定义生成mcrypt在配置脚本的模块列表中引用,并没有列为共享(这部分规范可以很容易地找到,因为%configure \
在提到只有一次规格)。在我的情况下,解决方案是完全从配置部分删除mcrypt,并将其添加到build-cgi
和build-ztscli
阶段。人们可以问“fpm舞台怎么样?” - 这是一个很好的问题,但事实证明,fpm sapi本身是用最少的模块构建的,并且使用通用的共享的个。
非常感谢,我删除了**/etc/php5/mods-available/mcrypt.ini **中的** extension = mcrypt.so **,现在错误消失thnx –