У меня есть машина под управлением Ubuntu 14.04.3 LTS, которая развертывается через Ansible. У меня установлен PHP 7 с использованием PPA Ондржея Сури для PHP.
$ dpkg -l | grep -i php
ii libapache2-mod-php7.0 7.0.3-2+deb.sury.org~trusty+1 amd64 server-side, HTML-embedded scripting language (Apache 2 module)
ii php-common 1:36+deb.sury.org~trusty+1 all Common files for PHP packages
ii php7.0 7.0.4-6+deb.sury.org~trusty+1 all server-side, HTML-embedded scripting language (metapackage)
ii php7.0-cli 7.0.0-5+deb.sury.org~trusty+1 amd64 command-line interpreter for the PHP scripting language
ii php7.0-common 7.0.4-6+deb.sury.org~trusty+1 amd64 documentation, examples and common module for PHP
ii php7.0-fpm 7.0.4-6+deb.sury.org~trusty+1 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary)
ii php7.0-json 7.0.0-5+deb.sury.org~trusty+1 amd64 JSON module for PHP
ii php7.0-opcache 7.0.0-5+deb.sury.org~trusty+1 amd64 Zend OpCache module for PHP
ii php7.0-pgsql 7.0.4-6+deb.sury.org~trusty+1 amd64 PostgreSQL module for PHP
Когда cron запускается /usr/lib/php/sessionclean
, Я получаю следующие предупреждения:
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 'sockets' already loaded 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 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 'sockets' already loaded 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 Warning: Module 'PDO' already loaded in Unknown on line 0
PHP Warning: Module 'calendar' already loaded in Unknown on line 0
При беге 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 'sockets' already loaded 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
И иногда в логах CodeIgniter я получаю строку:
Severity: Core Warning --> Module 'tokenizer' already loaded Unknown 0
Эта ошибка не новая, поэтому у меня было много других вопросов, но решение, которое они предлагают, - убедиться, что нет дубликатов. extension=...
строки в моем php.ini
но их нет.
Вот все файлы в /etc/php
. Есть куча ini
файлы для отдельных модулей, связанных с несколькими местами, которые могут вызвать проблему.
/etc/php/mods-available/json.ini
/etc/php/mods-available/opcache.ini
/etc/php/7.0/fpm/php-fpm.conf
/etc/php/7.0/fpm/conf.d/* -> /etc/php/7.0/mods-available/*
/etc/php/7.0/fpm/pool.d
/etc/php/7.0/fpm/pool.d/www.conf
/etc/php/7.0/fpm/php.ini
/etc/php/7.0/cli/conf.d/* -> /etc/php/7.0/mods-available/*
/etc/php/7.0/cli/php.ini
/etc/php/7.0/apache2/php.ini.ucf-dist
/etc/php/7.0/apache2/conf.d/* -> /etc/php/7.0/mods-available/*
/etc/php/7.0/apache2/php.ini
/etc/php/7.0/mods-available/fileinfo.ini
/etc/php/7.0/mods-available/pdo_pgsql.ini
/etc/php/7.0/mods-available/sockets.ini
/etc/php/7.0/mods-available/exif.ini
/etc/php/7.0/mods-available/shmop.ini
/etc/php/7.0/mods-available/ctype.ini
/etc/php/7.0/mods-available/sysvshm.ini
/etc/php/7.0/mods-available/gettext.ini
/etc/php/7.0/mods-available/ftp.ini
/etc/php/7.0/mods-available/sysvmsg.ini
/etc/php/7.0/mods-available/calendar.ini
/etc/php/7.0/mods-available/iconv.ini
/etc/php/7.0/mods-available/pdo.ini
/etc/php/7.0/mods-available/phar.ini
/etc/php/7.0/mods-available/posix.ini
/etc/php/7.0/mods-available/tokenizer.ini
/etc/php/7.0/mods-available/pgsql.ini
/etc/php/7.0/mods-available/sysvsem.ini
Какой из этих файлов мне нужно удалить, чтобы предупреждения не выводились без остановки работы PHP (через Интернет и интерфейс командной строки)? (бонусные баллы, если это легко сделать через Ansible)
Попробуйте переименовать файлы .ini в /etc/php/7.0/mods-available/ в nameofthemodule.ini.back
Например: sudo mv tokenizer.ini tokenizer.ini.back
Перезапустите php, затем проверьте php -m и проверьте, исчезло ли предупреждение для этого модуля.
Кажется, что при установке расширения также устанавливается php-common, эта установка затем создает новые файлы .ini для включенных расширений. Но эти расширения уже скомпилированы в двоичном файле php.
Обращайтесь с осторожностью, приведенный выше абзац является лишь предположением.