Предупреждение PHP: модуль уже загружен в Unknown в строке 0

На Mac OSX Mavericks при использовании homebrew php55 всякий раз, когда я запускаю команду php, я получаю следующее сообщение об ошибке (все работает нормально, это просто раздражает)

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

Я побежал

php --ini

и вывод был

php --ini
PHP Warning:  Module 'intl' already loaded in Unknown on line 0

Warning: Module 'intl' already loaded in Unknown on line 0
Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      /usr/local/etc/php/5.5/conf.d/ext-apcu.ini,
/usr/local/etc/php/5.5/conf.d/ext-igbinary.ini,
/usr/local/etc/php/5.5/conf.d/ext-intl.ini,
/usr/local/etc/php/5.5/conf.d/ext-memcached.ini,
/usr/local/etc/php/5.5/conf.d/ext-mongo.ini,
/usr/local/etc/php/5.5/conf.d/ext-uuid.ini,
/usr/local/etc/php/5.5/conf.d/ext-xdebug.ini

Проверено в файле php.ini, и единственное место, где загружается intl, находится вверху, и оно закомментировано. Содержимое других файлов выглядит примерно так:

extension="/usr/local/Cellar/php55/5.5.23/lib/php/extensions/no-debug-non-zts-20121212/intl.so"

где содержимое после последней косой черты является расширением.

Я не уверен, где еще искать.

Любая помощь приветствуется

22 ответа

Решение

Я думаю, что вы загрузили Xdebug, вероятно, в два раза php.ini,

  1. проверить php.ini, что ты не имеешь xdebug.so для значений extension= а также zend_extension=,

  2. Проверьте также /etc/php5/apache2 а также /etc/php5/cli/, Не стоит загружать в каждом php.ini в этом каталоге расширение xdebug.so, Только один файл php.ini должен загрузить его.

У меня была такая же проблема на Mac, т.е. Warning: Module 'pdo_pgsql' already loaded in Unknown on line 0, Вот как я это решил.

  • Найдите папку conf.d, мой был в каталоге/usr/local/etc/php/7.0/conf.d,
  • В этой папке есть файл с именем ext-pdo_pgsql.ini,
  • Тип sudo nano ext-pdo_pgsql.ini редактировать это.
  • Там должна быть строка extension="/usr/local/opt/php70-pdo-pgsql/pdo_pgsql.so", Прокомментируйте это, добавив точку с запятой в начало строки, т.е.;extension="/usr/local/opt/php70-pdo-pgsql/pdo_pgsql.so",
  • Сохраните файл. (Я обычно запускаю control + O, control + M).
  • Выход из файла (control + X).

Надеюсь, это кому-нибудь поможет.

Чтобы решить эту проблему, вы должны отредактировать файл php.ini (или extensions.ini) и закомментировать уже скомпилированные расширения. Например, после редактирования ваш INI-файл может выглядеть следующим образом:

;extension=pcre.so
;extension=spl.so

Источник: http://www.somacon.com/p520.php

У вас должен быть каталог /etc/php2/conf.d (по крайней мере, в Ubuntu, который я делаю), содержащий кучу файлов.ini, которые все загружаются при запуске php. Эти файлы могут содержать дубликаты настроек, которые конфликтуют с настройками в php.ini, В моей установке PHP я замечаю файл conf.d/20-intl.ini с extension=intl.so установка. Могу поспорить, что это ваш конфликт.

решено комментарием extension=curl

В моем случае я удалил комментарий;extension=php_curl.so в php.ini, но Ubuntu уже вызывала это расширение где-то еще.

Чтобы найти это "где-то еще", на php.ini сообщу. В моем случае путь был указан /etc/php/7.1/apache2/conf.d/20-curl.ini.

Итак, теперь мы редактируем этот файл (терминал):

sudo nano /etc/php/7.1/apache2/conf.d/20-curl.ini

Прокомментируйте;extension=php_curl.so

Сохраните файл и перезапустите apache:

sudo systemctl restart apache2

Для виртуального хостинга в cPanel я снял отметку с соответствующего модуля в разделе "Выбрать версию PHP" > "Расширения", и ошибка исчезла для PHP 7.4.

For issue related to code igniter project upload,
go to the base directory index.php and add this code:

if ($_SERVER['SERVER_NAME'] == 'local_server_name') {
    define('ENVIRONMENT', 'development');
} else {
    define('ENVIRONMENT', 'production');
}

if (defined('ENVIRONMENT')){
    switch (ENVIRONMENT){
        case 'development':
            error_reporting(E_ALL);
        break;

        case 'testing':
        case 'production':
            error_reporting(0);
        break;

        default:
            exit('The application environment is not set correctly.');
    }
}


    define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

У меня была такая же проблема после обновления с Fedora Server 24 (PHP 5) до 25 (PHP 7). После расследования я обнаружил, что /etc/php.d/ было два разных .ini загрузка файлов extension=geoip.so,

В предыдущей версии дистрибутива этот файл назывался 50-geoip.ini но недавний был изменен на 40-geoip.iniи я подозреваю, что в процессе обновления версии старое не было удалено, а новое было создано.

Это был фактический случай проблемы. После удаления бродячих 50-geoip.ini от /etc/php.d/ и перезапуск httpd это просто работало без нареканий.

Я удалил файл 20-mongo.ini в /etc/php5/cli/conf.d, и это решило проблему.

Я понял это, распечатав конфигурацию PHP и выполнив поиск по xml.ini. Обратите внимание на следующие выходные данные, как xml загружается дважды (сначала как 20-xml.ini, а затем как xml.ini):

$ php -i | grep xml
/etc/php.d/20-simplexml.ini,
/etc/php.d/20-xml.ini,
/etc/php.d/20-xmlwriter.ini,
/etc/php.d/30-xmlreader.ini,
/etc/php.d/xml.ini
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
libxml Version => 2.9.1
libxml
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text /|application/xhtml\+xml)
xml
libxml2 Version => 2.9.1
xmlreader
xmlwriter
libxslt compiled against libxml Version => 2.9.1

В файле php.ini есть два файла "php_intl.dll" на 872 и 968 числовых строках. если модуль предупреждения php 'intl' уже загружен в неизвестное в строке 0, это сообщение направлено на ваш CLI. Затем вы должны будете удалить префиксы полуклонов в строке 872. Я ожидаю, что это будет сделано.....

Закомментируйте эти две строки в php.ini

;extension=imagick.so
;extension="ixed.5.6.lin"

это должно решить проблему.

Просто для справки, так как это может помочь другим, кто находится на виртуальном хостинге (cPanel).

У меня была ошибка на виртуальном хостинге php7.2: модуль 'imagick' уже загружен в Unknown в строке 0

В начале хостинг-провайдер сказал, что это моя плохая конфигурация (работает Yii2.16). Но после того, как я показал им, что весь Интернет связал эту проблему с конфигурацией сервера, они начали меня слушать. После того, как я доказал, что на php7.1 не было ошибок, они начали искать ошибку.

Как мне сказали, ошибка произошла из-за конфигурации в модулях PERL или в пакете PEAR, но они не сообщили мне о реальной проблеме.

Итак, если вы находитесь на виртуальном хостинге - поговорите с вашим провайдером и поэкспериментируйте с версиями PHP (если вы можете изменить их).

Пробег php --ini и обратите внимание на путь к файлу на Loaded Configuration File.
Затем запустите команду типа cat -n /etc/php/7.2/cli/php.ini | grep intlчтобы узнать, прокомментировано расширение или нет.
Затем обновите загруженный файл конфигурации, прокомментировав строку, добавив ; Такие как ;extension=intl

Это может произойти при установке php-intl пакет, а также включите то же расширение на php.ini файл.

Если вы находитесь на виртуальном хостинге, просто примените настройки php по умолчанию. Cpanel переопределяет настройки php по умолчанию.

Я использую WAMP в Windows 10 с PHP 7.2.10. Я смог решить эту проблему, прокомментировав строку extension=ftp в php.ini внутри wamp64 \ bin \ php \ php7.2.10.

Я не уверен, но предполагаю, почему это происходит, потому что мой php.ini внутри wamp64 \ bin \ apache \ apache2.4.35 \ bin уже загружает этот модуль.

Обязательно перезапустите все службы WAMP после этого.

У меня была такая же проблема, поэтому я прокомментировал extension=mysqliпоскольку я включил это для запуска sql server. Проверьте, раскомментировали ли вы это расширение =mysqli, если да, поместите ; в php.ini

Если вы устанавливаете PHP с помощью MacPorts (знаю, называйте меня динозавром), файл php.ini не создается. Вместо этого он создает кучу ini-файлов в/opt/local/var/db/php82(или любую другую версию, которую вы установили), которые также читаются. Если вы сами создадите php.ini и предполагаете, что вам нужно добавить расширения, как это сделал бы любой здравомыслящий человек, вы увидите эту ошибку.

Вот как выглядит моя установка.

      % ll /opt/local/var/db/php82 
total 144
drwxr-xr-x  21 root  admin  672 Nov 17 07:22 .
drwxr-xr-x   5 root  wheel  160 Nov 16 19:23 ..
-rw-r--r--   1 root  admin  231 Nov 17 06:52 curl.ini
-rw-r--r--   1 root  admin  227 Nov 17 06:51 gd.ini
-rw-r--r--   1 root  admin  237 Nov 17 06:53 gettext.ini
-rw-r--r--   1 root  admin  233 Nov 17 06:53 iconv.ini
-rw-r--r--   1 root  admin  231 Nov 17 06:56 imap.ini
-rw-r--r--   1 root  admin  231 Nov 17 06:52 intl.ini
-rw-r--r--   1 root  admin  239 Nov 17 06:55 mbstring.ini
-rw-r--r--   1 root  admin  235 Nov 17 06:57 mcrypt.ini
-rw-r--r--   1 root  admin  257 Nov 17 06:58 mysql.ini
-rw-r--r--   1 root  admin  300 Nov 17 07:02 opcache.ini
-rw-r--r--   1 root  admin  237 Nov 17 06:58 openssl.ini
-rw-r--r--   1 root  admin  237 Nov 17 06:58 sockets.ini
-rw-r--r--   1 root  admin  260 Nov 17 07:03 sqlite.ini
-rw-r--r--   1 root  admin  231 Nov 17 07:02 tidy.ini
-rw-r--r--   1 root  admin  298 Nov 17 07:22 xdebug.ini
-rw-r--r--   1 root  admin  235 Nov 17 06:57 xmlrpc.ini
-rw-r--r--   1 root  admin  229 Nov 17 07:02 xsl.ini
-rw-r--r--   1 root  admin  229 Nov 17 07:00 zip.ini

cat /opt/local/var/db/php82/mysql.ini
; Do not edit this file; it is automatically generated by MacPorts. Any changes
; you make will be lost if you upgrade, uninstall or deactivate php82-mysql.
; To configure php82, edit /opt/local/etc/php82/php.ini.
extension=mysqli.so
extension=pdo_mysql.so

Здесь нет/opt/local/etc/php82/php.ini. Вместо этого есть два файла:php.ini-developmentиphp.ini-production, которые вы можете использовать в качестве шаблонов для вашего php.ini.

Я решил эту проблему, удалив файл php.ini из комментариев extension=grpc следующим образом : extension=grpc

В Windows 10 я исправляю это с помощью такого комментария

;extension=php_sockets.dll

У меня была похожая проблема, проблема была в том, что расширение int дублировалось.

Вы можете проверить в файле C:/xampp/php/php.ini и найти "intl". В моем случае расширение =intl уже присутствует, и я снова прокрутил и нашел второй intl "extension=php_intl.dll".

Расширение должно быть выполнено не может снова выполнить расширение intl. Это покажет ошибку как этот "Модуль 'intl' уже загружен".

Я исправил это, комментируя extension=php_intl.dll с помощью ";" как это ;extension=php_intl.dll, и перезапустил службу apache.

Другие вопросы по тегам