Расширение PHP mysqli в Ubuntu 16.04 не работает после обновления до версии 7.0.6

После обновления сегодня утром php больше не работает. Ошибка:

AH01071: Получена ошибка 'Сообщение PHP: Неустранимая ошибка PHP: вызов неопределенной функции mysqli_connect () в /var/www/html/public_html/.../config.php в строке 2 \ n ', реферер: http: // localhost / public_html /

php -v

PHP 7.0.6-9 + пожертвовать. sury.org ~ xenial + 2 (cli) (NTS) Copyright (c) 1997-2016 PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies с Zend OPcache v7.0.6-dev, Авторское право (c ) 1999-2016, Zend Technologies

Библиотеки были установлены раньше, мне потребовалось некоторое время, чтобы адаптироваться после dist-upgrade до 16.04

7
задан 18 May 2016 в 00:30

1 ответ

Без большей информации я могу только описать общие причины:

  1. php7.0-mysql пакет не установлен, для фиксации выполненный sudo apt-get install php-mysql
  2. mysqli, модуль был так или иначе отключен, для фиксации выполненный phpenmod mysqli
  3. Вы используете другой веб-SAPI версия PHP, чем у Вас есть CLI PHP, f.e. Вы, возможно, установил libapache2-mod-php5.6 с php7.0-cli
  4. Ваш Apache 2.x, конфигурация содержит другую версию PHP FPM (f.e. php5.6-fpm пакет) и модуль Apache2 (f.e. libapache2-mod-php7.0). Отключите FPM путем выполнения: a2disconf php5.5-fpm.
  5. веб-SAPI, который Вы используете для сети, имеет другой конфигурационный файл, и таким образом mysqli модуль не загружается, для фиксации добавляют extension=mysqli.so к этому файлу
  6. пользовательской конфигурации, что-то еще повреждается, и Вы должны поиск для сообщений журнала, указывающих, что повредилось

Для получения большего количества диагностики:

  1. выполненный 'php-r 'phpinfo ()'; и проверьте вывод на ссылки MySQL:

    $ php -r 'phpinfo();' | grep -i mysqli
    /etc/php/5.6/cli/conf.d/20-mysqli.ini,
    mysqli
    MysqlI Support => enabled
    mysqli.allow_local_infile => On => On
    mysqli.allow_persistent => On => On
    mysqli.default_host => no value => no value
    mysqli.default_port => 3306 => 3306
    mysqli.default_pw => no value => no value
    mysqli.default_socket => no value => no value
    mysqli.default_user => no value => no value
    mysqli.max_links => Unlimited => Unlimited
    mysqli.max_persistent => Unlimited => Unlimited
    mysqli.reconnect => Off => Off
    mysqli.rollback_on_cached_plink => Off => Off
    API Extensions => mysql,mysqli,pdo_mysql
    
  2. Делают то же с сетью, создают простую страницу только с' 'и проверяют вывод на модуль MySQLI

После дальнейшего изучения проблемы, мы узнали, что было соединение PHP 5.5 и PHP 7.0 в системе, которая, вероятно, перепутала Apache2. Поскольку общая рекомендация, которую я определенно рекомендовал бы, начинает с одной версии PHP отлаживать и производить чистку другого (s).

Для завершенной чистки определенной версии PHP можно произвести чистку phpX.Y-common пакет, который вытянет все другие обратные зависимости:

Пример:

apt-get purge php5.5-common # to remove PHP 5.5
apt-get purge php5.6-common # to remove PHP 5.6
apt-get purge php7.0-common # to remove PHP 7.0
# and to remove old php5 packages:
apt-get purge php5-common # to remove old PHP 5.x packages
0
ответ дан 18 May 2016 в 10:30
  • 1
    Это также, что я нашел, но благодарю подтвердить и суммировать его! – Darth Kangooroo 2 November 2017 в 22:53

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

Похожие вопросы: