web-dev-qa-db-fra.com

Pilotes PDO sans valeur dans Windows

Le php_pdo_mysql.dll ne peut pas être activé dans la machine. J'ai activé extension=php_pdo.dll et extension=php_pdo_mysql.dll dans le fichier php.ini, mais lorsque j'ai coché phpinfo(), l'élément Pilotes PDO est pas de valeur .

et aussi je ne trouve pas les infos mysql dans phpinfo () mais j’ai activé extension=php_mysql.dll.

Qu'est-ce qui ne va pas ?

27
Hardy Lim

J'ai eu le même problème lors de la mise à niveau vers PHP 5.4. j'ai eu

extension_dir = "ext"

dans php.ini et php -m commençait bien et signalait qu’il avait chargé pdo_mysql, mais lorsque j’ai exécuté phpinfo.php via Apache, le pilote manquait.

Je l'ai corrigé en remplaçant le extension_dir par un chemin absolu. J'imagine que cela s'est confondu en parcourant Apache et en le rendant relatif à autre chose.

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "D:/php-5.4.11-Win32-VC9-x86/ext"
59
takteek

essayez ceci: cherchez ceci dans votre php.ini et décommentez extension_dir = "ext"

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
 extension_dir = "ext"
8
Matías Cánepa

Essayez php -m dans la console, il affichera les erreurs de démarrage de PHP.

7
nzy

Sur Windows Server 2012, Apache 2.4, installation php 5.4, après avoir essayé tout le reste, changer cela a fonctionné ... 

PHPIniDir "C:\php\"

à

PHPIniDir "C:/php/"

... guh.

6
Gregg Seipp

Vérifiez auprès de phpinfo () pour vous assurer que le chemin du fichier php.ini est le même que celui défini. Sur les machines Windows, il est courant de créer plusieurs instances de php.ini et de semer la confusion.

En outre, appeler php depuis la ligne de commande vous donnera un message d'erreur avec plus de détails sur les raisons pour lesquelles il ne se charge peut-être pas. Il se peut que l'extension que vous tentez d'inclure ne soit pas compatible avec votre installation PHP. c'est-à-dire qu'il s'agit d'une dll non thread-safe avec un binaire thread-safe ou qu'il y a une incompatibilité de compilateur quelque part où vc9 et vc6 ont tous deux été utilisés.

4
Steve Buzonas

Dans PHP 7.1 x64 sous Windows avec Apache 2.4 x64:

extension_dir = "ext" ne fonctionne pas pour moi, 

chemin absolu: extension_dir = "C:\DEV\PHP71\ext \" a bien fonctionné

2
Łabudziński Piotr

Le commentaire de Mihai en 2012 dit: "Essayez php -m dans la console, cela montrera les erreurs de démarrage de PHP." Cette suggestion s'est avérée très utile. S'il y a des erreurs dans le fichier php.ini, le gestionnaire Windows PHP (IIS 8) n'est pas très clair sur ce qui ne va pas avec php.ini. 

Accédez à l'invite de commande et tapez php -m à l'invite. Un message contextuel (alerte) vous informera de toute erreur ET indiquera les numéros de ligne de ces problèmes. Dans la plupart des cas, mon seul problème était que je n'avais pas commenté (enlevé le point-virgule) sur quelques lignes php.ini où je n'aurais PAS dû le faire. 

Un autre conseil utile pour moi a été de mettre le chemin d'accès complet au dossier d'extensions (voir le commentaire de Jeremy Prine ci-dessus), ce qui a permis de résoudre le problème des messages "dll manquants".

2
Bravo F Yankee

Après avoir modifié la configuration de php.ini, vous devez redémarrer le serveur Apache dans le service Windows. Ensuite, le module d'extension sera chargé. utilisez le code suivant pour tester: <?php print_r(get_loaded_extensions());?>

2
Alexander

J'avais ce problème sur Windows en utilisant IIS. Mon php.ini contient les sections suivantes:

[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO]
extension=php_pdo.dll

J'ai simplement pris les sections [PHP_PDO_MYSQL] et [PHP_PDO] et échangé leurs positions afin que [PHP_PDO] vienne en premier. Je suppose que l'ordre de déclaration est important!

2
Jeremy Prine

Pilotes PDO sans valeur - vos entrées de DLL ne peuvent pas être commandées dans un fichier php.ini. Vérifiez la liste des entrées d'extension dll. 

extension=php_pdo_mysql.dll

les entrées doivent être placées à côté de toutes les entrées pdo. Pareil que

extension=php_mysql.dll

les entrées doivent être placées à côté de toutes, sans entrées pdo.

Houblon ça aide ..

1

Si vous utilisez PHP Manager avec IIS, procédez comme suit: 

  1. Ouvrez IIS (je l’ouvre généralement en tapant IIS au début); ;__.Start IIS

  2. Double-cliquez sur "PHP Manager"; Click PHP Manager

  3. Cliquez sur "Activer ou désactiver une extension"; Enable/Disable extension

  4. Faites défiler la liste pour trouver le pilote de votre choix (dans mon cas, php_pdo_mysqll.dll), puis cliquez sur "activer"; Scroll to driver & enable

  5. Après cela, le chauffeur devrait se présenter et travailler .Enabled driver

  6. Terminé! J'espère que cela a aidé quelqu'un, car les autres réponses n'ont pas fonctionné pour moi.

1
Bono

J'avais le même problème et j'étais perplexe jusqu'à ce que je lise ce qui suit:

http://www.artfulsoftware.com/php_mysql_win.html

J'utilise PHP 5.2 avec Apache 2.2. Le correctif pour moi était de copier le fichier libmysql.dll dans mon répertoire bin Apache.

Je recommanderais la ligne de conduite suivante à toute personne ayant ce problème: 1) assurez-vous que le fichier de configuration chargé se trouve à l'emplacement que vous pensez (c'est-à-dire qu'Apache n'utilise pas le php.ini par défaut) ) fournira la réponse à ce sujet 2) assurez-vous que toutes les extensions désirées sont situées dans le dossier php\ext et sont incluses dans le fichier php.ini (les extensions les plus courantes doivent simplement être non commentées) 3) Essayez de charger pdo_sqllite. Si cela apparaît dans phpinfo () après le redémarrage d'Apache, vous avez limité le problème à son incapacité à charger les extensions mysql nécessaires . 4) Suivez les instructions du lien ci-dessus.

1
user2014597

J'ai des allusions ici:

http://wiki.cementhorizon.com/display/CH/Solution+-+Unable+to+load+dynamic+library+C+php+ext+php_mysql.dll+-++++module++++++++ être + trouvé

Je me suis assuré de définir c:/php en tant que variable PATH, puis de déplacer les dll appropriées dans le répertoire c:/php (à partir du répertoire c:/php/ext).

Tout fonctionne pour moi maintenant, bien que je ne sois pas complètement à l'aise avec le déplacement des choses dans le répertoire php.

0
tapertaper

vérifiez que les fichiers pdo * .dll se trouvent dans les emplacements appropriés du répertoire du système d'exploitation, vérifiez que les références de ces fichiers sont activées dans php.ini, vérifiez que la chaîne de votre connexion à la base de données est correcte, redémarrez Apache

0
Bruno

J'ai eu ce problème également. J'ai Apache/2.2.22 (Win32) PHP/5.3.23 sur un ordinateur Windows 7. Ma solution changeait extension_dir = C:\Program Files (x86)\PHP\ext dans le fichier php.ini en extension_dir = "C:\Program Files (x86)\PHP\ext". Il fallait juste ajouter les guillemets.

J'ai également ajouté le répertoire php au CLASSPATH.

0
thecla_032

PHP erreur PDO n'existe pas sur 5.4

Erreur fatale: La classe 'DigitalToolBox\PDO' est introuvable dans C:\SERVEUR\www\MyAPP\DigitalToolBox\MysqlConnectionTool.php à la ligne 19

vous pouvez voir que pdo est chargé car il est dans la liste avec cette commande:

print_r(get_loaded_extensions()); 

cette erreur se produit lors de l'utilisation d'espaces de noms , nous devons ajouter au début de notre code l'instruction: 

use PDO;

SI ($ ceci-> fonctionne) $ voteForThis ++;

0
user1817927