файлы конфигурации — модуль PHP уже загружен предупреждение

Просто заметил, что PHP выдает предупреждения, когда выполняется на CLI:

модуль php уже загружен

$ php -v
PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
PHP Warning:  Module 'calendar' already loaded in Unknown on line 0
PHP Warning:  Module 'ctype' already loaded in Unknown on line 0
PHP Warning:  Module 'exif' already loaded in Unknown on line 0
PHP Warning:  Module 'fileinfo' already loaded in Unknown on line 0
PHP Warning:  Module 'ftp' already loaded in Unknown on line 0
PHP Warning:  Module 'gettext' already loaded in Unknown on line 0
PHP Warning:  Module 'iconv' already loaded in Unknown on line 0
PHP Warning:  Module 'Phar' already loaded in Unknown on line 0
PHP Warning:  Module 'posix' already loaded in Unknown on line 0
PHP Warning:  Module 'shmop' already loaded in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/sockets.so' - /usr/lib/php/20151012/sockets.so: undefined symbol: php_network_gethostbyname in Unknown on line 0
PHP Warning:  Module 'sysvmsg' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvsem' already loaded in Unknown on line 0
PHP Warning:  Module 'sysvshm' already loaded in Unknown on line 0
PHP Warning:  Module 'tokenizer' already loaded in Unknown on line 0
PHP 7.0.3-5+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0RC4, Copyright (c) 2002-2016, by Derick Rethans

Я знаю, как их предотвратить — просто убери extension={extname}.so от /etc/php/7.0/cli/conf.d/{extname}.ini файлы. Но:

Является ли удаление этой строки в файлах INI решением или просто обходным путем, чтобы избежать появления предупреждающих сообщений? Могут ли какие-либо побочные эффекты произойти из-за этого? Почему это происходит / Чем вызвана проблема?

4

Решение

Вы, вероятно, дважды загрузили показанные расширения в свои файлы php.ini.

Вы можете искать папку /etc/php/7.0, где вы найдете файлы php.ini в ее подпапках, скорее всего, в:

  • /etc/php/7.0/cli/
  • /etc/php/7.0/apache2/

Если вы видите некоторые расширение = something.so Повторите дважды в этих файлах php.ini, вы можете удалить его из одного или, если все еще предупреждения показывают удалить из обоих.

4

Другие решения

PHP на Linux обычно сканирует подпапки на наличие дополнительных файлов конфигурации, что и произошло в этом случае.

Configuration File (php.ini) Path => /etc/php/7.0/cli Loaded
Configuration File => /etc/php/7.0/cli/php.ini Scan this dir for additional .ini files => /etc/php/7.0/cli/conf.d
Additional .ini files parsed =>
/etc/php/7.0/cli/conf.d/10-opcache.ini,
/etc/php/7.0/cli/conf.d/10-pdo.ini,
/etc/php/7.0/cli/conf.d/20-calendar.ini,
/etc/php/7.0/cli/conf.d/20-ctype.ini,
/etc/php/7.0/cli/conf.d/20-curl.ini,
/etc/php/7.0/cli/conf.d/20-exif.ini,
/etc/php/7.0/cli/conf.d/20-fileinfo.ini,
/etc/php/7.0/cli/conf.d/20-ftp.ini,
/etc/php/7.0/cli/conf.d/20-gettext.ini,
/etc/php/7.0/cli/conf.d/20-iconv.ini,
/etc/php/7.0/cli/conf.d/20-json.ini,
/etc/php/7.0/cli/conf.d/20-mcrypt.ini,
/etc/php/7.0/cli/conf.d/20-mongodb.ini,
/etc/php/7.0/cli/conf.d/20-mysqli.ini,
/etc/php/7.0/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.0/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/7.0/cli/conf.d/20-phar.ini,
/etc/php/7.0/cli/conf.d/20-posix.ini,
/etc/php/7.0/cli/conf.d/20-readline.ini,
/etc/php/7.0/cli/conf.d/20-shmop.ini,
/etc/php/7.0/cli/conf.d/20-sockets.ini,
/etc/php/7.0/cli/conf.d/20-sqlite3.ini,
/etc/php/7.0/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.0/cli/conf.d/20-sysvsem.ini,
/etc/php/7.0/cli/conf.d/20-sysvshm.ini,
/etc/php/7.0/cli/conf.d/20-tokenizer.ini,
/etc/php/7.0/cli/conf.d/20-xdebug.ini,
/etc/php/7.0/cli/conf.d/20-xsl.ini

Маленькая прогулка по PHP отсканировала папку /etc/php/7.0/cli/ и нашел php.ini который сказал, что должно быть больше файлов конфигурации (ini) в подкаталоге conf.d и каждый модуль имеет свой собственный INI-файл, как правило, в Linux и в более поздней версии PHP.

Чтобы ответить на вопрос «Является ли удаление этой строки в файлах INI решением или просто обходным путем, чтобы избежать появления предупреждающих сообщений?»

Честно говоря, мне нравится иметь конфигурацию для каждого модуля в отдельном файле, но вы можете удалить файлы в conf.d если вы хотите настроить модуль в php.ini файл. Я просто нахожу, что это загромождено.

3

PHP загружает модули несколько раз. Найти и удалить лишнее php.ini файл (ы).

  1. Выполните следующий файл php. Он напечатает много информации о вашей установке PHP в таблице:

.

<?php
phpinfo();
  1. В таблице найдите запись для «Загруженный файл конфигурации». Он скажет вам, где php.ini расположен. Перейти на диск и переименовать его php.ini.bak,
  2. Перезагрузите сервер и снова запустите указанный выше файл. «Загруженный файл конфигурации» скажу где другой php.ini расположен. Это дубликат.
  3. Сделайте резервную копию и удалите дубликат. Восстановите оригинал, и вы должны быть готовы к.
2

Проверьте /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini. Не стоит загружать в каждый php.ini в этих каталогах расширение xdebug.so. Только один php.ini должен загрузить его.
Предупреждение PHP: модуль уже загружен в Unknown в строке 0

0

У меня такая же проблема. Я обновил свою версию PHP и снял проблему.

По какой-то причине проблема возникла из-за непоследовательного статуса composer.lock файл. После обновления композитора (и, конечно, выполнения всех моих юнит-тестов, чтобы убедиться, что ничего не сломано), ошибка исчезла, и запуск компоновщика был чистым.

0