web-dev-qa-db-fra.com

Codeigniter: appel d'erreur fatale à la fonction indéfinie mysqli_init ()

Je viens de changer de serveur et de rencontrer les erreurs suivantes:

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:

Le site Web est en Codeigniter. Cela fonctionne très bien sur un serveur et sur la machine locale. Mais lorsque je télécharge ce site Web sur le nouveau serveur, je rencontre des erreurs. Bien sûr, j'ai changé des paramètres importants comme la connexion à la base de données, base_url (), etc.

J'étais suspicieux à propos de la base de données, mais j'ai créé une nouvelle base de données et un nouvel utilisateur, etc. 

Pourquoi cela arrive-t-il? Il sera utile de savoir s'il s'agit d'un bogue sur le serveur ou sur le site Web. Aussi, quand je crée un fichier index.html avec du code de test, tout va bien. 

13
Bsos

Ce n'est pas un bug dans votre application, c'est juste un pilote manquant, vous avez donc plusieurs options ...

Allez à votre init php et décommentez ce qui suit:

extension=php_mysqli.dll

Sinon, essayez de l'installer sur votre serveur, cela varie en fonction de votre distribution.

Essayez d'installer php5-mysqlnd 

Si vous ne pouvez pas le faire en hébergeant des restrictions, déplacez-vous simplement vers le pilote mysql (vous n'avez pas besoin de changer d'autres configurations ou requêtes dans CodeIgniter ou quoi que ce soit d'autre ...)

comme ça (dans votre fichier de configuration)

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

Je viens d'avoir ce problème sur un ubuntu16.04, php7.1 installer avec Codeigniter 3.

La solution était simple (si difficile à trouver!)

Sudo apt-get install php7.0-mysql

J'ai réalisé que les fichiers mysql*.ini étaient absents du répertoire etc/php/7.1/mods-available. Je ne sais pas comment c'est arrivé, mais ça a fonctionné pour moi.

Si vous utilisez 7.2, tapez simplement Sudo apt-get install php7.2-mysql

12
JamesBB

En réalité, il ne s'agit pas d'un problème CodeIgniter mais d'un problème d'installation de PHP.

J'ai installé PHP5.6 sur mon serveur Linux et j'ai du mal à suivre les solutions recherchées pour utiliser la commande ff afin d'installer le fichier manquant mysqli_extension en PHP. 

Ce que j’ai essayé, c’est que je renvoie le message d’avertissement suivant: Impossible de localiser le paquet php5-mysqli.

Sudo apt-get install php5-mysqli

Cependant, ma version php est 5.6 alors j'ai essayé

Sudo apt-get install php5.6-mysqli

Alors ça marche.

2
Charmie

Utilisez ceci:

Sudo apt-get install php7.*-mysqli

ou 

Sudo phpenmod mysqli
Sudo service Apache2 restart
1
Yuvi

Ouvrez le dossier où vous avez installé PHP, Edit php.ini file
décommenter cette ligne: extension=php_mysqli.dll

1
Pathik Vejani

J'ai essayé, commentez en-dessous de la ligne dans le fichier /etc/php/cli/php.ini.

extension=php_mysqli.dll

J'utilise Ubuntu 16.04 sur les instances AWS-EC2 et PHP 7.0. Cela a résolu mon problème.

0
mbilgen

1, apt-get install (miam, compiler installer ce que vous voulez) extension php5-mysqlnd.

2 si ne fonctionne pas, assurez-vous que mysqli est chargé

    root@x19-ws07-1:/etc/php5/Apache2# cat /proc/31682/maps | grep mysql

si est chargé, vous pouvez voir:

    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 s'il n'est pas chargé, utilisez php --ini pour trouver le fichier de configuration

    xxxx@xxxx:~$ 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 、 sinon extension de configuration, configurez comme ceci et rappelez-vous de redémarrer votre serveur web

    xxxx@xxxxx:~$ cat /etc/php5/Apache2/conf.d/20-mysqli.ini
    ; configuration for php MySQL module
    ; priority=20
    extension=mysqli.so
0
dingxinglong

Sous Linux, vous pouvez installer l'extension du pilote MySQL.

Sudo apt-get install php-mysql

Sous Windows avec XAMPP, le pilote a déjà été enregistré dans le répertoire ext , mais vous devez l’activer dans php.ini . Vous devez supprimer le commentaire cette ligne:

extension=php_mysqli.dll

Vous devez également vérifier l’emplacement du répertoire d’extension dans php.ini . J'utilise la déclaration de chemin absolu (pas de chemin relatif) pour que cela fonctionne.

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

Par exemple,

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

Pour moi, c'était une ligne manquante dans php.ini qui la résolvait, car je copiais un autre fichier php.ini dans monXAMPPinstallation. Cela vaut la peine de vérifier si la ligne: "extension=php_mysqli.dll" existe (si vous utilisez Windows, mais cela ne s'applique pas à OP, car c'est un système Linux), ou si le "extension_dir" existe et est correct.

0
Swoop