2014-02-06 101 views
-1
<?php 

$m = new MongoClient('mongodb://localhost', array(
    'username' => 'wa', 
    'password' => 'password', 
    'db'  => 'wa' 
)); 

我正在使用該代碼段進行連接,並試圖在PHP中運行命令以在MongoDB集合或數據庫中插入/查找數據。MongoDB PHP連接不工作

我安裝了MongoDB,並在我的php.ini文件中添加了mongo.so擴展名。

我在做什麼錯?

+0

沒有收到錯誤。現在打開顯示錯誤。 – user3093095

+0

如果它不能連接,這應該拋出一個'MongoConnnectionException'。 – Phil

+0

http://puu.sh/6Ms3R.png from my phpinfo(); – user3093095

回答

0

你能運行命令行中的連接代碼嗎?你也應該傳遞你的連接選項,格式如下:

的mongodb:// [用戶名:密碼@]主機1 [:端口1] [,主機2 [:端口2:] ...]/DB

使用此:

<?php 

    $m = new MongoClient('mongodb://wa:[email protected]/wa'); 

?> 

這將拋出你在命令行中有任何錯誤,很容易診斷。答案應該是自我解釋。可能的原因:

  1. 您正在連接到localhost並沒有正在運行的這臺機器上mongodmongos。 [所以改變主機和可能的端口]。
  2. 您的用戶憑據不正確

這很可能是1的情況下通過應用你提供的用戶憑據的張女士,因爲你不太可能需要他們,如果你自己的機器上開發。在生產中的應用程序所在的服務器上運行MongoDB也很少見。

+0

使用'$ options'數組(如OP中所示)並將嵌入auth憑證嵌入'$ server'字符串中都是完全有效的。如果有的話,'$ options'數組可以更可靠,如果密碼中有特殊字符可能會導致解析。 – jmikola

+1

@jmikola同意連接格式的有效性。我主要提請注意這樣一個事實,即'localhost'連接可能不真實,並且更可能是遠程主機。 –