Я получаю следующее исключение, когда я пытаюсь использовать метод fetchall класса Zend_Db_Table_Abstract …
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)
Прежде всего, вы не можете иметь оба:
extension=pdo.so extension=pdo_mysql.so
Что для Linux, и:
extension=php_pdo.dll extension=php_pdo_mssql.dll
Что для Windows: вы должны выбрать, в зависимости от используемой системы.
Поскольку вы находитесь на окнах, вы должны использовать версию .dll
.
Но учтите, что вы использовали:
extension=php_pdo_mssql.dll
т.е. вы загрузили расширение pdo_mssql
– это для Microsoft SQL Server, а не MySQL.
Вместо этого вы должны загрузить расширение для MySQL:
extension=php_pdo_mysql.dll
После исправления перезапустите Apache; и все должно стать лучше.
Если ситуация не phpinfo()
, вы должны проверить вывод phpinfo()
:
phpinfo()
он указывает, какой файл php.ini
загружен; убедитесь, что вы изменили правильную. pdo_mysql
Mabe swich поддержал PDO в Mysqli, они могут быть включены в ZF (я сделал это).
Сегодня я переместил один веб-сайт с нашего тестового сервера на клиентский сервер и получил такую ошибку, что для этого адаптера требуется расширение PDO, но расширение не загружено. Я думал, что должно быть расширение phdo pdo.so, которое не установлено на сервере. После распознавания проблемы я искал файл php.ini для проверки расширения, но из-за совместного хостинга они не предоставили мне файл ini.
Здесь, в этом посте, я пытаюсь описать, как решить такую проблему, очень легко, и вы можете решить проблему, используя приведенные ниже шаги:
Если вы хотите узнать больше о PDO, посмотрите 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. Теперь обновите кеш браузера, и проблема решена.
Если у вас есть учетная запись хостинга, и вы ничего не можете сделать из-за ограничения на основные файлы конфигурации сервера, и вы не можете перезапустить apache. Вы можете обойти эту проблему, изменив версию php с «Выбрать версию PHP» таким образом, вы перезапустите настройки. В моем случае я попытался отредактировать php.ini, чем php5.ini также добавил файл .user.ini, и в результате я получил эту ошибку: для этого адаптера требуется расширение PDO, но расширение не загружено. Теперь моя проблема решена, это решение может работать на других хостингах не только godaddy, если вы не системный администратор !!!