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.
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)
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
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.
Utilisez ceci:
Sudo apt-get install php7.*-mysqli
ou
Sudo phpenmod mysqli
Sudo service Apache2 restart
Ouvrez le dossier où vous avez installé PHP, Edit php.ini
file
décommenter cette ligne: extension=php_mysqli.dll
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.
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
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"
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.