2010-03-05 29 views
5

Tôi nhận được ngoại lệ sau khi tôi cố gắng để sử dụng phương pháp fetchall của lớp Zend_Db_Table_Abstract ...Phần mở rộng PDO là cần thiết cho bộ chuyển đổi này, nhưng phần mở rộng không được tải

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

Tôi đã thêm như sau dòng trong tập tin php.ini

extension=pdo.so 
extension=pdo_mysql.so 

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

Ngoài ra tôi có các PDO MySQL gói được cài đặt trong hệ thống của tôi. Nhưng vẫn Tôi nhận được ngoại lệ trên .... (Cũng khởi động lại máy chủ Apache)

+0

Bạn có chắc chắn 100% bạn đang sử dụng đúng tệp php.ini không? Gọi 'phpinfo()' để chắc chắn. –

+0

Có, những thay đổi khác mà tôi đã thực hiện trong tệp php.ini đang được phản ánh – neo

Trả lời

8

Trước hết, bạn không thể có cả hai:

extension=pdo.so 
extension=pdo_mysql.so 

nào là dành cho Linux, và:

extension=php_pdo.dll 
extension=php_pdo_mssql.dll 

Dành cho cửa sổ: bạn phải chọn, tùy thuộc vào hệ thống bạn đang sử dụng.

Khi bạn đang ở trên cửa sổ, bạn nên sử dụng phiên bản .dll.


Nhưng lưu ý rằng bạn sử dụng:

extension=php_pdo_mssql.dll 

ví dụ bạn nạp các pdo_mssql mở rộng - đó là dành cho Microsoft SQL Server, và không MySQL.

Thay vào đó, bạn nên tải các phần mở rộng cho MySQL:

extension=php_pdo_mysql.dll 

Sau khi sửa chữa đó, khởi động lại Apache; và mọi thứ sẽ trở nên tốt hơn.


Nếu mọi thứ không trở nên tốt hơn, bạn nên kiểm tra đầu ra của phpinfo():

  • Vào đầu ra phpinfo() 's, nó chỉ ra mà php.ini tập tin được tải; đảm bảo bạn đã sửa đổi đúng.
  • Kiểm tra, thấp hơn trong tập tin, nếu có một phần về pdo_mysql
    • Nếu không, hãy error_log của Apache, chỉ trong trường hợp ;-)
+0

Xin chào, @Pascal MARTIN Tôi đã sửa lỗi ở trên và bây giờ tôi gặp phải lỗi trình điều khiển mysql hiện chưa được cài đặt. Nhưng tôi có thể kết nối trực tiếp với MySQL từ PHP .. Chúng ta có cần bất kỳ trình điều khiển đặc biệt nào cho zend không? – neo

+0

Đó là một vấn đề dll, tôi đã giải quyết nó .. Thnks. – neo

+0

Bạn được chào đón :-) Rất vui khi bạn giải quyết được vấn đề! –

0

Mabe swich hậu thuẫn từ PDO để Mysqli giúp, họ swichable trong ZF (tôi đã làm như vậy).

0

Hôm nay tôi đã chuyển một trang web từ máy chủ thử nghiệm của chúng tôi sang máy chủ khách và gặp phải lỗi như vậy mà phần mở rộng PDO là bắt buộc đối với bộ điều hợp này nhưng phần mở rộng không được tải. Tôi đã nghĩ rằng phải có phần mở rộng pdo.so php mà không được cài đặt trên máy chủ. Sau khi nhận ra vấn đề, tôi đang tìm tệp php.ini để kiểm tra phần mở rộng nhưng do lưu trữ được chia sẻ, họ không cung cấp cho tôi tệp ini.

Ở đây trong bài viết này, tôi đang cố gắng để mô tả làm thế nào để giải quyết các loại như vậy của vấn đề nó là rất dễ dàng và bạn có thể giải quyết vấn đề bằng cách sử dụng các bước dưới đây:

Nếu bạn muốn biết thêm về giao diện PDO tại http://php.net/manual/en/ref.pdo-mysql.php

Nếu bạn có quyền truy cập của tập tin php.ini sau đó kiểm tra

;extension=pdo_mysql.so 

Chỉ cần bạn cần phải bỏ ghi chú dòng để kích hoạt như vậy có vẻ như là

extension=pdo_mysql.so 

Lưu tệp và khởi động lại máy chủ.

Nếu bạn không có quyền truy cập của tập tin php.ini, hãy làm theo các bước sau

Bước 1. Vui lòng kiểm tra thư mục cài đặt Magento của bạn có phải cho tôi một tập tin có tên là php.ini.sample.

Bước 2. Bây giờ đổi tên các tập tin từ php.ini.sample để php.ini

Bước 3. Đặt mã dưới đây vào nó

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

Bước 4. Bây giờ làm mới bộ nhớ cache của trình duyệt của bạn và Vấn đề đã được giải quyết.

-1

Nếu tài khoản lưu trữ trên trình quản lý tài khoản của bạn và bạn không thể làm bất kỳ điều gì vì hạn chế đối với các tệp cấu hình chính của máy chủ và bạn không thể khởi động lại apache. Bạn có thể bỏ qua vấn đề này bằng cách thay đổi phiên bản php từ "Chọn phiên bản PHP" theo cách này, bạn sẽ khởi động lại cài đặt. Trong trường hợp của tôi, tôi đã cố gắng chỉnh sửa php.ini hơn php5.ini cũng đã thêm tệp .user.ini và kết quả là tôi nhận được lỗi này: Mở rộng PDO là bắt buộc đối với bộ điều hợp này nhưng phần mở rộng không được tải Bây giờ vấn đề của tôi là giải quyết, giải pháp này có thể làm việc trên các hostings khác không chỉ godaddy nếu bạn không phải là một quản trị viên hệ thống !!!

Các vấn đề liên quan