2010-03-05 1 views
5

Je reçois l'exception suivante lorsque je tente d'utiliser la méthode fetchall de la classe Zend_Db_Table_Abstract ...L'extension PDO est nécessaire pour cet adaptateur, mais l'extension n'est pas chargé

An error occurred4545 
EXCEPTION_OTHER 
Exception information: 
Message: The PDO extension is required for this adapter but the extension is not loaded 

Stack trace: 
#0 D:\www\TestProject\library\Zend\Db\Adapter\Pdo\Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect() 
#1 D:\www\TestProject\library\Zend\Db\Adapter\Abstract.php(448): Zend_Db_Adapter_Pdo_Mysql->_connect() 
#2 D:\www\TestProject\library\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('DESCRIBE `album...', Array) 
#3 D:\www\TestProject\library\Zend\Db\Adapter\Pdo\Mysql.php(156): Zend_Db_Adapter_Pdo_Abstract->query('DESCRIBE `album...') 
#4 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(823): Zend_Db_Adapter_Pdo_Mysql->describeTable('albums', NULL) 
#5 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(862): Zend_Db_Table_Abstract->_setupMetadata() 
#6 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(969): Zend_Db_Table_Abstract->_setupPrimaryKey() 
#7 D:\www\TestProject\library\Zend\Db\Table\Select.php(100): Zend_Db_Table_Abstract->info() 
#8 D:\www\TestProject\library\Zend\Db\Table\Select.php(78): Zend_Db_Table_Select->setTable(Object(Application_Model_Albums)) 
#9 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(1005): Zend_Db_Table_Select->__construct(Object(Application_Model_Albums)) 
#10 D:\www\TestProject\library\Zend\Db\Table\Abstract.php(1303): Zend_Db_Table_Abstract->select() 
#11 D:\www\TestProject\application\controllers\IndexController.php(17): Zend_Db_Table_Abstract->fetchAll() 
#12 D:\www\TestProject\library\Zend\Controller\Action.php(513): IndexController->indexAction() 
#13 D:\www\TestProject\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('indexAction') 
#14 D:\www\TestProject\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
#15 D:\www\TestProject\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch() 
#16 D:\www\TestProject\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() 
#17 D:\www\TestProject\public\index.php(26): Zend_Application->run() 
#18 {main} 
Request Parameters: 
array (
    'controller' => 'index', 
    'action' => 'index', 
    'module' => 'default', 
) 

J'ai ajouté ce qui suit lignes dans le fichier php.ini

extension=pdo.so 
extension=pdo_mysql.so 

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

i ont également le package MySQL PDO installé dans mon système. Mais je reçois l'exception ci-dessus .... (également redémarré le serveur Apache)

+0

Êtes-vous sûr à 100% que vous utilisez le bon fichier php.ini? Appelez 'phpinfo()' pour vous assurer. –

+0

Oui, les autres changements que j'ai faits dans le fichier php.ini sont reflétés – neo

Répondre

8

Tout d'abord, vous ne pouvez pas avoir les deux:

extension=pdo.so 
extension=pdo_mysql.so 

Quelles sont pour Linux et:

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

Qui sont pour Windows: vous devez choisir, en fonction du système que vous utilisez. Comme vous êtes sur Windows, vous devez utiliser la version .dll.


Mais notez que vous avez utilisé:

extension=php_pdo_mssql.dll 

à savoir que vous avez chargé l'extension pdo_mssql - qui est pour Microsoft SQL Server, MySQL et non.

Au lieu de cela, vous devez charger l'extension pour MySQL:

extension=php_pdo_mysql.dll 

Après correction qui, redémarrez Apache; et les choses devraient aller mieux.


Si les choses ne vont pas mieux, vous devriez vérifier la sortie de phpinfo():

  • Au début de la production de phpinfo(), il indique quel fichier php.ini est chargé; assurez-vous que vous avez modifié le bon.
  • Vérifiez, plus bas dans le fichier, s'il y a une section sur pdo_mysql
    • Sinon, vérifiez la error_log d'Apache, juste au cas ;-)
+0

Salut, @Pascal MARTIN J'ai corrigé ce qui précède et maintenant je reçois l'erreur le pilote mysql n'est pas actuellement installé. Mais je suis capable de me connecter à MySQL directement à partir de PHP. Avons-nous besoin d'un pilote spécial pour zend? – neo

+0

C'était un problème dll, je l'ai résolu .. Thnks. – neo

+0

De rien :-) Content de résoudre le problème! –

0

Mabe Swich soutenu de PDO à Mysqli aide, ils sont swichable en ZF (je l'ai fait).

0

Aujourd'hui j'ai déplacé un site Web de notre serveur de test au serveur de client et obtenant tel genre de l'erreur que l'extension de PDO est exigée pour cette carte mais l'extension n'est pas chargée. Je pensais qu'il doit y avoir l'extension php pdoo.so qui n'est pas installée sur le serveur. Après avoir identifié le problème, je cherchais le fichier php.ini pour vérifier l'extension mais en raison de l'hébergement partagé, ils ne m'ont pas fourni le fichier ini.

Ici, dans ce post, je suis en train de décrire comment résoudre le ce genre de problème, il est très facile et vous pouvez résoudre le problème en utilisant les étapes ci-dessous:

Si vous voulez en savoir plus au sujet le regard AOP à http://php.net/manual/en/ref.pdo-mysql.php

Si vous avez accès du fichier php.ini puis vérifiez

;extension=pdo_mysql.so 

Juste vous devez supprimer la ligne pour l'activer ressemble tellement que

extension=pdo_mysql.so 

Enregistrez le fichier et redémarrez le serveur.

Si vous n'avez pas accès au fichier php.ini, suivez les étapes suivantes

Étape 1. S'il vous plaît vérifier votre répertoire d'installation de Magento, il doit me un fichier nommé php.ini.sample.

Étape 2. Maintenant, renommer le fichier de php.ini.sample à php.ini

Étape 3. Mettre le code ci-dessous dans ce

extension = pdo.so 
extension = pdo_sqlite.so 
extension = sqlite.so 
extension = pdo_mysql.so 

Étape 4. Maintenant rafraîchir le cache de votre navigateur et le problème a été résolu.

-1

Si votre compte d'hébergement sur godaddy et vous ne pouvez rien faire en raison de la restriction aux principaux fichiers de configuration du serveur et vous ne pouvez pas redémarrer Apache. Vous pouvez contourner ce problème en changeant la version de php de "Select PHP Version" de cette façon, vous allez redémarrer les paramètres. Dans mon cas j'ai essayé d'éditer php.ini que php5.ini a également ajouté le fichier .user.ini et en résultat de cela j'ai eu cette erreur: L'extension de PDO est exigée pour cette carte mais l'extension n'est pas chargée Maintenant mon problème est résolu, cette solution peut fonctionner sur d'autres hébergements non seulement godaddy si vous n'êtes pas un administrateur système !!!

Questions connexes