2013-01-21 63 views
3

我有一個類似發行於描述herePHPUnit的,致命錯誤:類「庫MySQLi」未找到

一切工作爲我所期望的;我的代碼訪問數據庫並打印輸出,而不管我是從我的命令行界面還是從Web瀏覽器運行。同樣的結果。如果我在Eclipse中使用PHPUnit運行它,我得到一個錯誤:

Multiple annotations found at this line: 
    - Fatal error: Class 'mysqli' not found 
    - Occurrence of 'connection' 

在下面一行指向:

這段代碼打印出「是」。

$connection = new \mysqli(HOST, USER, PASS, DATABASE); 

if (extension_loaded('mysqli')) { 
    echo "Yes"; 
} 
else { 
    echo "No"; 
} 

還有一點需要指出的是,我在上面的代碼所在的類中使用了我自己的命名空間。我的單元測試位於全局名稱空間中。

我已經按照上面的URL中的步驟,但唉,無濟於事。 :(

在命令提示符下運行這給沒有錯誤:?

php -r "new mysqli();" 

請可能有人幫助我瞭解這裏的問題

+1

爲什麼mysqli之前的反斜槓? –

+0

因爲沒有反斜線,它認爲mysqli是我名字空間內的一個函數。 –

+0

@Bondye - namespacing –

回答

0

我不知道,如果你已經用你的配置文件php.ini正確的路徑,無論是DLL或共享對象(的.so)文件。嘗試運行,如果你使用的Unix/Linux,在命令行上,

$> php -i | grep mysqli 

,看看它說,正在安裝的東西,或者創建一個PHP腳本

<?php phpinfo(); ?>

運行該腳本,如果它的正確或沒有加載檢查。如果您確信它已經真正安裝了,請檢查您的php.ini文件,如果它已正確加載,請檢查php.ini的「擴展名」部分。

檢查運行PHPUnit時是否也在命令行中,因爲在web模式下運行時,它可能與php.ini有不同的路徑。

+0

1)我認爲mysqli已經正確安裝。它存在於phpinfo中;我可以從Web界面訪問數據庫;我可以從命令行提示符訪問數據庫。 2)我不確定我有兩個不同的php.ini文件。 whereis php .ini只返回一個php.ini文件。 –

+0

如果安裝了擴展,那麼當你在eclipse中運行它時,它幾乎肯定會使用不同的PHP.ini,而不會加載擴展。 'phpinfo()'的輸出會告訴你加載了什麼擴展名以及正在使用哪個php.ini文件。 – SDC