2010-03-05 4 views
5

я получаю следующее исключение при попытке использовать fetchall метод в Zend_Db_Table_Abstract ...расширение PDO для этого требуется адаптер, но расширение не загружается

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', 
) 

Я добавил следующее строки в файле php.ini

extension=pdo.so 
extension=pdo_mysql.so 

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

Также у меня есть пакет PDO MySQL установлен в моей системе. Но все-таки я получаю выше исключение .... (также перезапустить сервер Apache)

+0

Вы действительно уверены, что используете правильный файл php.ini? Вызовите 'phpinfo()', чтобы убедиться. –

+0

Да, другие изменения, которые я сделал в файле php.ini, получают отражение – neo

ответ

8

Прежде всего, вы не можете иметь оба:

extension=pdo.so 
extension=pdo_mysql.so 

Какие для Linux, а также:

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

которые предназначены для окон: вам нужно выбирать, в зависимости от используемой вами системы.

Поскольку вы находитесь на окнах, вы должны использовать версию .dll.


Но обратите внимание, что вы использовали:

extension=php_pdo_mssql.dll 

т.е. вы загрузили pdo_mssql расширение - что для Microsoft SQL Server, а не MySQL.

Вместо этого, вы должны загрузить расширение для MySQL:

extension=php_pdo_mysql.dll 

После исправления этого перезапустите Apache; и все должно стать лучше.


Если ситуация не лучше, вы должны проверить выход phpinfo():

  • В начале производства phpinfo() «s, это указывает, какой php.ini файл загружен; убедитесь, что вы изменили правильную.
  • Проверьте, ниже в файле, если есть раздел о pdo_mysql
    • Если нет, проверьте error_log сервера Apache, на всякий случай ;-)
+0

Привет, @Pascal MARTIN Я исправил вышеизложенное, и теперь я получаю сообщение об ошибке, когда драйвер mysql в настоящее время не установлен. Но я могу подключиться к MySQL напрямую с PHP. Нужен ли нам какой-нибудь специальный драйвер для zend? – neo

+0

Это была проблема с dll, я решил ее .. Thnks. – neo

+0

Добро пожаловать :-) Рад, что вы решили проблему! –

0

Mabe включателем при поддержке с PDO в Mysqli помогает, они swichable в ZF (я сделал так).

0

Сегодня я переместил один веб-сайт с нашего тестового сервера на клиентский сервер и получил такую ​​ошибку, что для этого адаптера требуется расширение PDO, но расширение не загружено. Я думал, что должно быть расширение phdo pdo.so, которое не установлено на сервере. После распознавания проблемы я искал файл php.ini для проверки расширения, но из-за совместного хостинга они не предоставили мне файл ini.

Вот в этом посте я пытаюсь описать, как решить такого рода проблемы это очень просто, и вы можете решить эту проблему, выполнив действия, приведенные ниже:

Если вы хотите узнать больше о ПДО взгляд на http://php.net/manual/en/ref.pdo-mysql.php

Если у вас есть доступ к файлу php.ini затем проверить

;extension=pdo_mysql.so 

Просто вам нужно раскомментировать строку, чтобы активировать так это выглядит как

extension=pdo_mysql.so 

Сохраните файл и перезапустите сервер.

Если у вас нет доступа к файлу php.ini, выполните следующие действия

Шаг 1. Пожалуйста, проверьте Magento каталог установки там должен мне файл с именем php.ini.sample.

Шаг 2. Теперь переименуйте файл из php.ini.sample в php.ini

Шаг 3. Поместите код ниже в него

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

Шаг 4. Теперь обновите кэш браузера и проблема решена.

-1

Если у вас есть учетная запись хостинга godaddy, и вы ничего не можете сделать из-за ограничения на основные файлы конфигурации сервера, и вы не можете перезапустить apache. Вы можете обойти эту проблему, изменив версию php с «Выбрать версию PHP» таким образом, вы перезапустите настройки. В моем случае я попытался изменить php.ini, чем php5.ini также добавил файл .user.ini, и в результате я получил эту ошибку: Для этого адаптера требуется расширение PDO, но расширение не загружено Теперь моя проблема решение, это решение может работать на других хостингах не только godaddy, если вы не системный администратор !!!