Intereting Posts
Можно ли получить доступ к $ this из include () 'd файла в PHP-классе? Синхронизация базы данных Online / Offline – MySQL / PHP ASIFormDataRequest не отправляет значения post Ошибка авторизации PayPal PHP: получить позицию (x, y) слоя PSD-файла PHP и MySQL: сравнение месяца и дня с динамическим годом PHP: отправить электронную почту через cronjob и установить количество отправки электронной почты за минуту как заменить определенную строку в текстовом файле с помощью php? Динамически заменить атрибуты «src» всех тегов <img> (сокращение) Salesforce / PHP – массовое исходящее сообщение (SOAP), проблема с тайм-аутом – см. Обновление # 2 Получение содержимого URL с помощью PHP и Curl Проблемы с pg_query (); в php Отслеживать, откуда пользователи приходят на PHP? Продолжайте получать ошибку: implode (): недопустимые аргументы, передаваемые при обновлении данных как получить доступ к переменным PHP из JavaScript?

Предупреждение PHP: модуль «mcrypt» уже загружен

Когда я запускаю команду с PHP, она показывает мне ошибку. Например, когда я запускаю php -v чтобы увидеть мою PHP-версию, она показывает мне ошибку, а затем информацию о PHP:

Модуль 'mcrypt' уже загружен в Unknown в строке 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 

Related of "Предупреждение PHP: модуль «mcrypt» уже загружен"

Ваш php.ini содержит две или более следующих строк:

 extension=mcrypt.so 

Удалите все, кроме одного.

Обычно php.ini живет в /etc/php.ini или /etc/php5/php.ini . Иногда добавляются дополнительные файлы .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 

Иногда это происходит с php-fpm , и самое смешное, консольная php не усложняет это, используя тот же набор .ini-файлов в одно и то же время, доказывая, что mcrypt на самом деле не ссылается дважды.

Как оказалось, php-fpm имеет набор встроенных модулей по умолчанию, которые он пытается загрузить, по крайней мере, на Linux (так как это не воспроизводится на FreeBSD). mcrypt находится в этом списке, поэтому, когда у пользователя есть дополнительный .ini-файл в /etc/php.d , mcrypt похоже, загружается дважды.

Суровым обходным путем для этого является добавление -n к php-fpm в начале, скопируйте pnp.ini в php-fpm.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 из части configure и добавить его в стадии build-cgi и build-ztscli . Можно спросить: «Как насчет стадии fpm?» – и это хороший вопрос, но, оказывается, fpm sapi сам построен с минимальным количеством модулей и использует общие общие .

У меня была такая же проблема, и это было связано с созданием PHP из исходного кода с параметром ./configure --with-mcrypt . Похоже, что если PHP построен с флагом --with-mcrypt , тогда нет необходимости указывать extension=mcrypt.so в php.ini . Это вызывает предупреждение, упомянутое выше.

Отключить отчет об ошибках в разработке, вы можете отключить его из файла index.php, как показано ниже.

 case 'development': error_reporting(-1); ini_set('display_errors', 0); break;