Position actuelle: Accueil> Derniers articles> Que dois-je faire si je rencontre PDO :: Getavailabledrivers renvoyant un tableau vide ou une erreur? Résumé des FAQ et des solutions

Que dois-je faire si je rencontre PDO :: Getavailabledrivers renvoyant un tableau vide ou une erreur? Résumé des FAQ et des solutions

M66 2025-06-26

Questions et solutions fréquemment posées

1. PHP n'a pas PDO ou le pilote de base de données correspondant installé

PDO :: GetAvailabledRivers () Renvoie un tableau vide.

Cause: PHP n'est pas compilé ou l'extension PDO n'est pas activée, ou l'extension du pilote de base de données correspondant n'est pas installée.

résoudre:

  • Confirmez que Extension = PDO.SO ou Extension = PHP_PDO.DLL est activé dans le fichier de configuration PHP Php.ini .

  • Pour des pilotes de base de données spécifiques, tels que MySQL, vous devez activer l'extension PDO_MYSQL : Extension = PDO_MYSQL.SO ou Extension = PHP_PDO_MYSQL.DLL .

  • Redémarrez le serveur Web ou le service PHP-FPM.

  • Utilisez PHP -M pour afficher les modules activés et confirmez s'il y a PDO et PDO_MYSQL correspondant, etc.

2. L'extension PHP ne se charge pas correctement

Performances: Même si l'extension est installée, un tableau vide est toujours retourné.

Cause: il y a une erreur dans le fichier de configuration PHP ou plusieurs conflits de fichiers de configuration, ce qui entraîne l'extension qui ne prend pas effet.

résoudre:

  • Utilisez PHP - ini pour confirmer le chemin de fichier PHP.ini chargé.

  • Vérifiez qu'il n'y a pas d'autre dépassement de configuration ou que la configuration utilisée dans l'environnement CLI et Web est différente.

  • Vérifiez le journal d'erreur PHP pour confirmer s'il y a une erreur lorsque l'extension est chargée.

  • Ajoutez manuellement l' instruction Extension = correspondante dans PHP.ini .

3. Version ou environnement incompatible

Performances: l'OPD est disponible mais non disponible pour un pilote spécifique.

Cause: la version PHP est trop ancienne ou la version étendue ne correspond pas.

résoudre:

  • Mettez à niveau PHP vers la version recommandée (comme PHP 7.4 et plus).

  • Réinstallez l'extension pour assurer la compatibilité des versions.

  • Sur Linux, vous pouvez utiliser le gestionnaire de packages pour installer le pilote PDO correspondant, tel que sudo apt install php-mysql .

4. La prise en charge de l'OPD n'est pas activée pendant la compilation PHP

Performances: pas de support APD.

Cause: - Les paramètres de pilote de base de données correspondants et correspondants n'ont pas été ajoutés lors de la compilation de PHP.

résoudre:

  • Recompiler PHP et ajouter des paramètres, par exemple:

     <span><span>./configure --enable-pdo --with-pdo-mysql --with-pdo-sqlite
    </span></span>
  • Ou utilisez le package binaire pour installer la version.

5. Problèmes d'environnement de fonctionnement PHP (comme la CLI est incompatible avec le Web)

Performances: renvoie normal sous CLI, mais la page Web renvoie un tableau vide.

Cause: les fichiers de configuration PHP utilisés par la CLI et le Web sont différents.

résoudre:

  • Utilisez phpinfo () pour afficher les fichiers de configuration réellement chargés et les informations d'extension dans un environnement Web.

  • Vérifiez que le fichier de configuration PHP du serveur Web a une APD et les pilotes associés activés.


Résumer

Lorsque vous rencontrez PDO :: GetAvailabledRivers () renvoie un tableau vide ou une erreur, l'idée de base est:

  1. Vérifiez si l'APD et les extensions de pilote de base de données correspondantes sont installées.

  2. Confirmez que l'extension est chargée correctement.

  3. Vérifiez si la version PHP et la configuration de l'environnement sont cohérentes.

  4. Redémarrez le serveur ou le service PHP pour vous assurer que la configuration prend effet.

  5. Vérifiez les journaux et phpinfo () pour les indices.

Maître ces étapes d'enquête et la plupart des problèmes peuvent être résolues facilement. J'espère que cet article sera utile aux problèmes que vous rencontrez lors de l'utilisation de l'APD!