Предупреждение 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
,
проверить
php.ini
, что ты не имеешьxdebug.so
для значенийextension=
а такжеzend_extension=
,Проверьте также
/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=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.