Просто заметил, что 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 решением или просто обходным путем, чтобы избежать появления предупреждающих сообщений? Могут ли какие-либо побочные эффекты произойти из-за этого? Почему это происходит / Чем вызвана проблема?
Вы, вероятно, дважды загрузили показанные расширения в свои файлы php.ini.
Вы можете искать папку /etc/php/7.0, где вы найдете файлы php.ini в ее подпапках, скорее всего, в:
Если вы видите некоторые расширение = something.so Повторите дважды в этих файлах php.ini, вы можете удалить его из одного или, если все еще предупреждения показывают удалить из обоих.
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
файл. Я просто нахожу, что это загромождено.
PHP загружает модули несколько раз. Найти и удалить лишнее php.ini
файл (ы).
.
<?php
phpinfo();
php.ini
расположен. Перейти на диск и переименовать его php.ini.bak
, php.ini
расположен. Это дубликат. Проверьте /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini. Не стоит загружать в каждый php.ini в этих каталогах расширение xdebug.so. Только один php.ini должен загрузить его.
Предупреждение PHP: модуль уже загружен в Unknown в строке 0
У меня такая же проблема. Я обновил свою версию PHP и снял проблему.
По какой-то причине проблема возникла из-за непоследовательного статуса composer.lock
файл. После обновления композитора (и, конечно, выполнения всех моих юнит-тестов, чтобы убедиться, что ничего не сломано), ошибка исчезла, и запуск компоновщика был чистым.