2010-03-05 104 views
5

我得到以下異常時,我嘗試使用Zend_Db_Table_Abstract類的使用fetchall方法...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()'來確保。 – 2010-03-05 12:20:17

+0

是的,其他更改,我在php.ini文件中得到反映 – neo 2010-03-05 12:22:55

回答

8

首先,你不能兼得:

extension=pdo.so 
extension=pdo_mysql.so 

這對於Linux和:

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

哪些適用於Windows:根據您使用的系統,您必須選擇。

由於您在windows上,您應該使用.dll版本。


但請注意,您使用的:

extension=php_pdo_mssql.dll 

您加載的pdo_mssql擴展 - 這是微軟SQL Server和MySQL的不是。

相反,你應該加載MySQL的擴展:

extension=php_pdo_mysql.dll 

更正後,重新啓動Apache;事情會變得更好。


如果情況不好轉的話,應該檢查的phpinfo()輸出:

  • phpinfo()的輸出的開始,它表明這php.ini文件被加載;確保你修改了正確的一個。
  • 檢查,在文件中時,如果有一個關於pdo_mysql
    • 部分如果沒有,檢查Apache的error_log中,以防萬一;-)
+0

嗨,@帕斯卡馬丁我已經糾正了上述,現在我得到錯誤的MySQL驅動程序目前沒有安裝。但是我可以直接從PHP連接到MySQL ..我們是否需要任何特殊的驅動程序爲zend? – neo 2010-03-05 13:20:45

+0

這是一個dll問題,我已經解決了它。Thnks。 – neo 2010-03-05 13:32:27

+0

不客氣:-)很高興你解決了這個問題! – 2010-03-05 16:34:47

0

馬貝,務必從PDO來支持Mysqli有所幫助,他們在ZF(我是這麼做的)中很聰明。

0

今天我將一個網站從我們的測試服務器移到了客戶端服務器,並且出現了這樣的錯誤,即此適配器需要PDO擴展,但未加載擴展。我在想,必須有pdo.so php擴展,它沒有安裝在服務器上。在認識到這個問題後,我一直在尋找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步:現在刷新瀏覽器緩存和問題已解決。

-1

如果您在godaddy託管帳戶,並且由於服務器的主要配置文件的限制而無法重新啓動apache,您無法執行任何操作。您可以通過從「選擇PHP版本」更改PHP版本來繞過此問題,這樣您將重新啓動設置。在我的情況下,我嘗試編輯php.ini比php5.ini還添加.user.ini文件,結果我得到了這個錯誤: 此適配器需要PDO擴展,但擴展未加載 現在我的問題是解決方案,如果你不是系統管理員,這個解決方案不僅可以在其他主機上工作,