Иногда это происходит с php-fpm
, и самое смешное, консоль php
не complans об этом, используя один и тот же набор .ini-файлов в то же время, доказывая, что mcrypt
на самом деле нет ссылок дважды.
Как оказалось, php-fpm
имеет набор встроенных модулей по умолчанию, которые он пытается загрузить, по крайней мере, на Linux (так как это не воспроизводится на FreeBSD). mcrypt
находится в этом списке, поэтому, когда у пользователя есть дополнительный .ini-файл в каталоге /etc/php.d
, 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 и не указан как общий (эта часть спецификации может быть легко найдена, так как %configure \
упоминается только один раз в спецификации). В моем случае решение заключалось в том, чтобы полностью удалить mcrypt из части конфигурации и добавить его к этапам build-cgi
и build-ztscli
. Можно было спросить «Как насчет стадии fpm?» - и это хороший вопрос, но, оказывается, fpm sapi сам построен с минимальным количеством модулей и использует общий общий.
Большое спасибо, я удалил строку ** extension = mcrypt.so ** в **/etc/php5/mods-available/mcrypt.ini **, и ошибка исчезла сейчас. Thnx –