it-swarm.com.de

Codeigniter: fataler Fehleraufruf an undefinierte Funktion mysqli_init ()

Ich habe gerade meinen Server gewechselt und erhalte folgende Fehler:

Fatal error: Call to undefined function mysqli_init() in /home/blacktwitter/public_html/system/database/drivers/mysqli/mysqli_driver.php on line 126
A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /home/blacktwitter/public_html/system/database/drivers/mysqli/mysqli_driver.php:126)

Filename: core/Common.php

Line Number: 564

Backtrace:

A PHP Error was encountered

Severity: Error

Message: Call to undefined function mysqli_init()

Filename: mysqli/mysqli_driver.php

Line Number: 126

Backtrace:

Website ist in Codeigniter. Es funktioniert sehr gut auf einem Server und auch auf dem lokalen Rechner. Wenn ich diese Website auf den neuen Server hochlade, habe ich diese Fehler. Natürlich habe ich wichtige Parameter wie Datenbankverbindung, base_url () usw. geändert.

Ich war misstrauisch wegen der Datenbank, aber ich habe eine neue Datenbank und einen neuen Benutzer erstellt usw. und die Verbindungsinformationen geändert. 

Warum passiert das? Es ist hilfreich zu wissen, ob es sich um einen Fehler auf dem Server oder auf der Website handelt. Auch wenn ich einige index.html mit etwas Testcode erstelle, ist alles in Ordnung. 

13
Bsos

Es ist kein Fehler in Ihrer Anwendung, es ist nur ein fehlender Treiber, also haben Sie einige Optionen ...

Gehen Sie zu Ihrem PHP-Init und kommentieren Sie Folgendes:

extension=php_mysqli.dll

Wenn dies nicht der Fall ist, installieren Sie es auf Ihrem Server. Dies ist abhängig von Ihrer Distribution.

Versuchen Sie, php5-mysqlnd zu installieren. 

Wenn Sie dies nicht tun können, indem Sie Einschränkungen für das Hosting ausführen, wechseln Sie einfach zum mysql-Treiber.

so (in deiner Konfigurationsdatei)

$db['default']['dbdriver'] = 'mysql'; (you might have mysqli now)
17
jpganz18

Ich hatte gerade dieses Problem auf einem ubuntu16.04, php7.1 mit Codeigniter 3 installiert.

Lösung war einfach (wenn schwer zu finden!)

Sudo apt-get install php7.0-mysql

Ich erkannte, dass die mysql*.ini-Dateien im etc/php/7.1/mods-available-Verzeichnis fehlten. Nicht sicher, wie es passiert ist, aber das hat für mich funktioniert.

Wenn Sie 7.2 verwenden, geben Sie einfach Sudo apt-get install php7.2-mysql ein.

12
JamesBB

Dies ist eigentlich kein CodeIgniter-Problem, sondern ein Installationsproblem von PHP.

Ich habe PHP5.6 in meinem Linux-Server installiert und habe Schwierigkeiten damit, den googled-Lösungen der Verwendung des Befehls ff zu folgen, um die fehlende mysqli_extension in PHP zu installieren. 

Was ich versucht habe, ist aber die Warnmeldung zurückgeben: Das Paket php5-mysqli kann nicht gefunden werden

Sudo apt-get install php5-mysqli

Meine PHP-Version ist jedoch 5.6, also habe ich es versucht

Sudo apt-get install php5.6-mysqli

Dann klappt es.

2
Charmie

Benutze das:

Sudo apt-get install php7.*-mysqli

oder 

Sudo phpenmod mysqli
Sudo service Apache2 restart
1
Yuvi

Öffnen Sie den Ordner, in dem Sie PHP installiert haben, Edit php.ini-Datei
unkommentieren diese Zeile: extension=php_mysqli.dll

1
Pathik Vejani

Ich habe versucht, die Zeile in /etc/php/cli/php.ini-Datei auszukommentieren.

extension=php_mysqli.dll

Ich verwende Ubuntu 16.04 auf AWS-EC2-Instanzen und PHP 7.0. Das hat mein Problem gelöst.

0
mbilgen

Das Problem ist, dass die MySQL-Erweiterung von PHP möglicherweise nicht installiert ist. Wenn Sie PHP 7 verwenden, geben Sie einfach den folgenden Befehl ein und installieren Sie die Erweiterung.

Sudo apt-get install php-mysql
0
RHL

In meinem Fall mit Windows hatte ich alle erforderlichen Erweiterungen unkommentiert, aber sie wurden nicht geladen. Dann überprüfte ich die Erweiterungsverzeichnisvariable in php.ini und es war als "ext", aber dann fiel mir ein, dass ich zuvor ein ähnliches Problem hatte. Also, was ich getan habe, war im Grunde das explizite Verzeichnis. Etwas wie das:

extension_dir = "C:\php\ext"

Natürlich hängt das spezifische ext-Verzeichnis vollständig von Ihren eigenen Einstellungen und Standorten ab.

Nach dem Update der php.ini-Datei muss Apache nur noch neu gestartet werden, um die Änderungen zu übernehmen.

Wenn Sie Ihren Apache manuell installiert haben (ohne vorgefertigte Lösungen wie XAMPP oder WAMPP), müssen Sie diese Befehle nur in einer Eingabeaufforderung oder einer PowerShell mit Administratorrechten verwenden.

net stop Apache2.4

net start Apache2.4

0
Mihail Minkov

1 、 apt-get install (yum, kompiliere install egal was) php5-mysqlnd-Erweiterung.

2 、 Wenn dies nicht funktioniert, stellen Sie sicher, dass mysqli geladen ist

    [email protected]:/etc/php5/Apache2# cat /proc/31682/maps | grep mysql

wenn geladen ist, können Sie Folgendes sehen:

    7f2cd3266000-7f2cd3285000 r-xp 00000000 fd:00 864561                     /usr/lib/php5/20131226/mysqli.so
    7f2cd69ef000-7f2cd6a2e000 r-xp 00000000 fd:00 864559                     /usr/lib/php5/20131226/mysqlnd.so

3 Wenn nicht geladen, verwenden Sie php --ini, um die Konfigurationsdatei zu finden

    [email protected]:~$ php --ini
    Configuration File (php.ini) Path: /etc/php5/Apache2
    Loaded Configuration File:         /etc/php5/Apache2/php.ini
    Scan for additional .ini files in: /etc/php5/Apache2/conf.d
    Additional .ini files parsed:      /etc/php5/Apache2/conf.d/05-opcache.ini,
    /etc/php5/Apache2/conf.d/20-mysqli.ini

4 、 Wenn dies nicht die Konfigurationserweiterung ist, konfigurieren Sie die Konfiguration wie folgt, und denken Sie daran, den Webserver neu zu starten

    [email protected]:~$ cat /etc/php5/Apache2/conf.d/20-mysqli.ini
    ; configuration for php MySQL module
    ; priority=20
    extension=mysqli.so
0
dingxinglong

In Linux können Sie die MySQL-Treibererweiterung installieren.

Sudo apt-get install php-mysql

In Windows mit XAMPP wurde der Treiber bereits im Verzeichnis ext gespeichert. Sie müssen ihn jedoch in php.ini aktivieren. Sie müssen unkommentieren diese Zeile:

extension=php_mysqli.dll

Sie müssen auch den Speicherort des Erweiterungsverzeichnisses in php.ini überprüfen. Ich benutze die absolute Pfadangabe (nicht den relativen Pfad), damit es funktioniert.

extension_dir="your\absolute\path\to\xampp\php\ext"

Zum Beispiel,

extension_dir="C:\xampp\php\ext"
0
Luki B. Subekti

Für mich war dies eine fehlende Zeile in php.ini , die das Problem gelöst hat, als ich eine andere php.ini - Datei in meineXAMPP-Installation kopierte. Es lohnt sich zu prüfen, ob die Zeile "extension=php_mysqli.dll" vorhanden ist (wenn Windows ausgeführt wird, dies ist jedoch nicht für OP anwendbar, da es sich um ein Linux-System handelt) oder ob der "extension_dir" existiert und korrekt ist.

0
Swoop