Die PHP mysqli-Erweiterung in Ubuntu 16.04 funktioniert nach dem Upgrade auf Version 7.0.6 nicht

7

Nach dem Update heute Morgen funktioniert PHP nicht mehr. Error:

AH01071: Fehler 'PHP-Nachricht: PHP Schwerwiegender Fehler: Aufruf der undefinierten Funktion mysqli_connect () in /var/www/html/public_html/.../config.php in Zeile 2 \ n', Verweis: http: // localhost / public_html /

php -v

PHP 7.0.6-9 + donate.sury.org ~ xenial + 2 (cli) (NTS) Copyright (c) 1997-2016 Die PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies mit Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, von Zend Technologies

Die Bibliotheken wurden zuvor installiert. Nach dem Dist-Upgrade auf 16.04 habe ich einige Zeit gebraucht, um mich anzupassen

user30424
quelle
Bitte überprüfen Sie sudo apt-get install php-mysql; sudo service apache2 restart.
Davidbaumann
# sudo dpkg -l php * | grep php | wc -l 145 Glauben Sie mir, die absoluten Grundlagen, die ich bereits ausprobiert habe.
user30424

Antworten:

16

Ohne weitere Informationen kann ich nur allgemeine Ursachen beschreiben:

  1. php7.0-mysql Paket ist nicht installiert, um den Lauf zu beheben sudo apt-get install php-mysql
  2. mysqli Modul wurde irgendwie deaktiviert, um den Lauf zu reparieren phpenmod mysqli
  3. Sie verwenden verschiedene Web - SAPI PHP - Version als PHP CLI, zB haben Sie installiert haben könnte libapache2-mod-php5.6mitphp7.0-cli
  4. Ihre Apache 2.x-Konfiguration enthält verschiedene PHP-FPM-Versionen (zB php5.6-fpmPaket) und Apache2-Module (zB libapache2-mod-php7.0). Deaktivieren Sie das FPM, indem Sie Folgendes ausführen : a2disconf php5.5-fpm.
  5. Das Web-SAPI, das Sie für das Web verwenden, hat eine andere Konfigurationsdatei und daher wird das MySQL-Modul nicht geladen, um das Hinzufügen extension=mysqli.sozu dieser benutzerdefinierten Konfigurationsdatei zu korrigieren
  6. etwas anderes ist kaputt und Sie sollten nach Protokollmeldungen suchen, die angeben, was kaputt ist

So erhalten Sie weitere Diagnosen:

  1. führe `php -r 'phpinfo () aus;' und überprüfen Sie die Ausgabe auf MySQL-Referenzen:

    $ 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. Machen Sie dasselbe mit dem Web, erstellen Sie eine einfache Seite mit nur `'und überprüfen Sie die Ausgabe für das MySQLI-Modul

Nachdem wir uns das Problem genauer angesehen hatten, stellten wir fest, dass das System eine Mischung aus PHP 5.5 und PHP 7.0 enthielt, die Apache2 wahrscheinlich verwirrte. Als allgemeine Empfehlung würde ich definitiv empfehlen, mit einer PHP-Version zu beginnen, um die andere (n) zu debuggen und zu löschen.

Um eine bestimmte PHP-Version vollständig zu löschen, können Sie ein phpX.Y-commonPaket löschen , das alle anderen umgekehrten Abhängigkeiten abruft:

Beispiel:

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
oerdnj
quelle
php -r 'phpinfo ();' | grep mysqli gibt /etc/php/7.0/cli/conf.d/20-mysqli.ini, mysqli mysqli.allow_local_infile => On => On mysqli.allow_persistent => On => On mysqli.default_host => no value = > kein Wert mysqli.default_port => 3306 => 3306 mysqli.default_pw => kein Wert => kein Wert mysqli.default_socket => kein Wert => kein Wert mysqli.default_user => kein Wert => kein Wert mysqli.max_links => Unbegrenzt => Unbegrenzt mysqli.max_persistent => Unbegrenzt => Unbegrenzt mysqli.reconnect => Aus => Aus mysqli.rollback_on_cached_plink => Aus => Aus API-Erweiterungen => mysqli, pdo_mysql
user30424
Scheint, dass MysqlI Support => enabled fehlt. Welche Konfigurationsdatei soll ich die Erweiterung = mysqli.so hinzufügen?
user30424
Führen Sie sudo phpenmod mysqliphp7.0-mysql aus oder installieren Sie es neu mit:sudo apt-get purge php7.0-mysql && sudo apt-get install php-mysql
oerdnj
Keine Hilfe. Wurde neu installiert, wie Sie gepostet haben, aber genau der gleiche Fehler. Das Seltsame ist, dass es nach einem Upgrade passiert ist (kein Distupgrade!).
user30424
Was gibt ldd /usr/lib/php/*/mysqli.soaus?
Oerdnj