2016-07-05 162 views
2

在Centos上部署laravel項目期間,我收到了此錯誤。Laravel:PDO類未找到錯誤

PHP Fatal error: Class 'PDO' not found in /var/www/html/<laravel_project_name>/config/database.php on line 16 

我已經通過編輯php.ini文件啓用了pdo擴展。

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

而當我嘗試php -v時,出現以下錯誤。

PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_mysql.so' - /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: mysqlnd_allocator in Unknown on line 0 

我在編輯php.ini文件後重新啓動了httpd服務器。 請幫我解決這個錯誤。 此致敬禮。

回答

2

您正在獲取的錯誤意味着您的php配置文件(通常是php.ini)中有一個extension = ...或zend_extension = ...行,它試圖加載該擴展名,但無法加載該文件它可能是因爲它不存在或它沒有權限訪問它。

在這種情況下設置了所有的低於你的php.ini文件:

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

但他們已經實際上被安裝?如果已經安裝,那麼請檢查權限/usr/lib64/php/modules/pdo_mysql.so已正確設定

yum install php-pdo php-mysqli

由於您使用的CentOS,嘗試運行下面的安裝PDO

1

database.php中的16號線是這個

'fetch' => PDO::FETCH_CLASS 

這意味着PDO類不存在。

您可以安裝PDO,如果需要重新啓動這樣

yum install php-pdo 

service httpd restart 

也就是說檢查此鏈接http://php.net/manual/en/pdo.installation.php

在Unix系統上安裝PDO

PDO and the PDO_SQLITE driver is enabled by default as of PHP 5.1.0. You may need to enable the PDO driver for your database of choice; consult the documentation for database-specific PDO drivers to find out more about that. 

創建PDO的一個實例laravel你可以這樣做

$pdo = DB::connection()->getPdo();