Je fais un tutoriel et j'obtiens cette erreur:
Erreur fatale: la classe 'MySQLi' n'a pas été trouvée (LONG URL) à la ligne 8
Le code sur la ligne 8 est:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
J'ai vu en ligne quelqu'un a dit de voir si cela était activé dans mon phpinfo (), mais il n'y avait rien de répertorié dans la sous "mysqli".
De plus, je lance PHP version 5.2.5
On dirait que vous avez juste besoin de installer MySQLi .
Si vous pensez que vous avez fait cela et que vous rencontrez toujours un problème, publiez votre système d’exploitation et tout ce qui pourrait aider à le diagnostiquer davantage.
Vous pouvez vérifier si les bibliothèques mysqli sont présentes en exécutant ce code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
Si vous êtes sur bunt , lancez:
Sudo apt-get install php5-mysqlnd
Si vous appelez "new mysqli (..)" depuis une classe qui est namespaced, une erreur similaire risque de se produire Fatal error: Class 'foo\bar\mysqli' not found in
. Pour résoudre ce problème, définissez-le explicitement sur l'espace de noms racine avec une barre oblique inverse précédente, comme suit:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());
En plus de supprimer les commentaires de l'extension php_mysqli.dll dans php.ini, supprimez également les commentaires de la directive extension_dir dans php.ini = et précisez votre localisation:
extension_dir = "C:\software\php\dist\ext"
Cela a fonctionné pour moi.
Cela ressemble à un problème avec votre installation.
Je pensais pouvoir aider n'importe qui avec le même problème en utilisant les serveurs Namesco. J'essayais de résoudre ce problème après avoir déplacé une base de données de mon serveur local sur mon ordinateur personnel vers namesco. Ils n’aideraient pas, ils ont dit que c’était un problème de codage.
Malheureusement, leurs articles de soutien ont été une perte de temps. Après avoir lu cela, je suis allé à l'interface d'administration avec une nouvelle détermination.
Merci tout le monde.
Comment activer mysqli dans php.ini
Comment charger le fichier php.ini
J'ai vérifié tout ce qui précède et cela n'a pas fonctionné pour moi,
Il y a quelques étapes que j'ai trouvées.
J'ai utilisé PHP Version 5.5.9-1ubuntu4.17 sur buntu 14.04
D'abord vérifier le dossier
#ls /etc/php5/mods-available/
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini
Si elle ne contient pas mysqli.ini, lisez l’autre réponse pour l’installer,
Ouvert php.ini
find extension_dir
Dans mon cas, je dois mettre extension_dir = /usr/lib/php5/20121212
Et redémarrez Apache2: /ect/init.d/Apache2 restart
J'ai trouvé une solution à ce problème après une longue procédure d'analyse. Après avoir testé correctement mon installation php avec les fonctionnalités de ligne de commande, j'ai découvert que le php fonctionnait bien et pouvait fonctionner avec la base de données mysql. Btw. vous pouvez exécuter des fichiers de code avec du code php avec la commande php -f nomfichier.php
J'ai donc compris qu'il devait y avoir un problème avec Apache.
J'ai créé un fichier contenant uniquement la fonction phpinfo ().
Ici, j'ai vu que dans la ligne
Fichier de configuration chargé
Mon fichier de configuration n'a pas été chargé, il a été mentionné (aucun).
Enfin, j'ai trouvé dans la configuration Apache l'entrée<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>
Mais j'ai installé le PHP 7 et Apache n'a donc pas pu charger le fichier php.ini car il n'y avait pas d'entrée pour cela. J'ai ajouté
<IfModule php7_module>
PHPINIDir "C:/xampp/php"
</IfModule>
et après redémarrage Apache tout fonctionne bien.
Ces blocs de code ci-dessus se trouvent dans mon fichier httpd-xampp.conf. Puisse-t-il être ailleurs dans votre configuration.
Dans le même fichier que j'avais modifié avant les réglages du php 7 en remplacement de la version php 5.
#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5Apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7Apache2_4.dll"
Comme vous pouvez le constater, le paquet xampp est installé mais ce problème ne concerne que Apache.
J'espère donc que cela aidera quelqu'un à résoudre ce problème.
Le PHP Zip inclut la plupart des extensions couramment utilisées (* .dll sur des fenêtres telles que php_mysqli.dll) dans le répertoire\ext, mais elles ne sont pas activées par défaut. Erreur fatale lors d'une tentative d'utilisation de MySQLi:
( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
Pour activer les extensions, ouvrez php.ini (vous devrez peut-être d'abord copier php.ini-development en tant que php.ini), puis supprimez le commentaire (ou ajoutez) ces deux lignes:
extension_dir = "ext"
Et toutes les extensions particulières pour lesquelles vous obtenez des erreurs fatales, c'est-à-dire mysqli:
extension=mysqli
Certaines distributions (telles que Gentoo ) supportent plusieurs installations de PHP et vous devez vous assurer que vous en utilisez une avec mysqli installé et activé.
Sur Gentoo, j’avais installé un nouveau PHP (avec l’indicateur USE mysqli activé)), mais j’avais besoin d’activer la nouvelle version de PHP (depuis l’ancien il fallait manquer mysqli):
# eselect php list Apache2
[1] php5.3 *
[2] php5.5
# eselect php set Apache2 2
You have to run `/etc/init.d/Apache2 restart' for the changes to take effect
# /etc/init.d/Apache2 restart
sur Ubuntu:
Sudo apt-get install php-mysql
Sudo service Apache2 restart
Cela a résolu l'erreur initiale 'pas trouvé' pour moi. Notez la barre oblique inverse, fonctionne comme un rêve maintenant. Nécessaire uniquement lors de l'utilisation d'un espace de noms, mais qui ne le fait pas aujourd'hui?
$ mysqli = new\MySQLi ($ db_server, $ db_user, $ db_pass, $ db_name) ou die (mysqli_error ());
<?php /* If the error is due to calling mysqli in a class */
class dbconnect extends mysqli{
private $Host = 'localhost';
private $user = 'root';
private $pass = '';
private $db = 'test';
public function __construct() {
parent::__construct($this->Host, $this->user, $this->pass, $this->db);
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') ' .
mysqli_connect_error());
}
}
}
?>
Sur une nouvelle installation de PHP, supprimez ;
avant extension_dir
dans php.ini.