2013-12-15 36 views
1

我剛剛將我的服務器的PHP版本升級到5.4.22,現在每個使用PDO的腳本都不起作用。自升級PHP到5.4.22之後,PDO將不會運行

這將不工作,我的PHP腳本的例子:

<?php 
    $dsn = 'mysql:dbname=testDB;host=127.0.0.1'; 
    $user = '[hidden]'; 
    $password = '[hidden]'; 
    try { 
     $pdo = new PDO($dsn, $user, $password); 

    } catch (PDOException $e) { 
     echo 'Connection failed: ' . $e->getMessage(); 
     exit; 
    } 
?> 

當我運行該腳本,我得到:Fatal error: Class 'PDO' not found,我得到同樣的錯誤,每創建一個連接腳本。

我跑膩子檢查,以檢查PDO甚至存在,並且發現這一點:

[email protected] [~]# php -m | grep -i pdo 
PDO 
pdo_mysql 
pdo_sqlite 

的php.ini已經

extension=pdo.so 
extension=pdo_sqlite.so 
; sqlite was removed by EasyApache v3.22.24 on Sat Dec 14 23:24:10 2013 (PHP v5.4.x incompatibility) 
; extension=sqlite.so 
extension=pdo_mysql.so 

phpinfo();在PHP文件要求即時上PHP Version 5.3.10

如何在我的終端# php -vPHP 5.4.22

所以這真的讓我困惑,爲什麼我得到兩個版本。

+0

可能重複[PHP致命錯誤:類'PDO'未找到](http://stackoverflow.com/questions/11813381/php-fatal-error-class-pdo-not-found) – JakeGould

+0

@JakeGould已經閱讀那個問題,似乎沒有幫助我的情況=/ – Sir

+0

你看到行擴展= p​​do.so在php.ini中啓用? – Satya

回答

1

你的問題表明你正在通過命令行檢查PHP版本。但通過Web瀏覽器的PHP將使用加載到Apache中的模塊,這是完全不同的事情。因此,在通過Web瀏覽器加載的PHP腳本中檢查phpinfo();的輸出。 PDO是安裝還是顯示爲通過安裝?

無論你的Apache配置文件在哪裏尋找目錄mods-available和文件php5.load。 Ubuntu下12.04它會在這條道路:

/etc/apache2/mods-available/php5.load 

,其內容應該是:

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so 

是否被安裝在新編譯libphp5.so在該文件中匹配的路徑?

此外,該LoadModule php5_module行可能是您的主要Apache配置的一部分。環顧四周,找出設置的位置。然後,只要將新模塊的路徑設置到實際安裝的位置即可。

相關問題