2012-04-14 35 views
0

我正在開發PHP,並且有一個簡單的文件來測試各種功能。爲了方便這個,我想從命令行運行這個文件。這是一個問題,我不確定它是什麼。PHP PDO異常 - 僅當從終端運行

該代碼使用PDO。我有一個數據庫類,充當一個PDO包裝並強制執行一個單例設計模式。這門課很簡單。下面是一些相關的代碼:

// instance of PDO 
private static $db = null; 

//connection related fields 
const dsn = "mysql:dbname=mydb;host=localhost"; 
const user = "myuser"; 
const password = "mypass"; 

//get access to the PDO instance 
public static function get_instance() 
{ 
    if(!self::$db) 
    { 
     self::$db = new PDO(self::dsn,self::user,self::password); 
     self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     self::$db->exec("set names utf8"); 
    } 

    return self::$db; 

} 

現在,當我創建一個具有以下測試文件:

$db = Database::get_instance(); 

,並在命令行中,像這樣運行:

php5 ./testing.php 

我收到一個異常: PDOException'帶消息'找不到驅動程序' 這是由實例化一個新的PDO對象的上述行引起的。

但是,如果我通過瀏覽器導航到此文件,並且它由我的Web服務器提供,它運行良好,該對象按預期工作。

這似乎是從終端運行PHP文件的問題。我不認爲這是代碼中的問題。任何人都可以提出什麼可能導致這一點?任何建議或幫助將真正被讚賞。謝謝。

回答

3

PHP的命令行版本可以具有與web版本不同的配置。找到正確的PHP配置文件,設置數據庫驅動程序,你應該沒問題。

2
/usr/local/php/bin/php -> /usr/bin/php 

/usr/bin/php是PHP的命令行版本, /usr/local/php/bin/php是網頁版

嘗試ln命令