2013-05-27 161 views
2

我揣摩爲什麼PHP驅動程序無法連接到MongoDB的PHP無法創建連接到MongoDB的

  • PHP 5.3.16版(64位)
  • 的MongoDB:MongoDB的-Linux的x86_64-2.4 0.3
  • OS:CentOS版本5.2(最終)

  • 添加鏈接:mongo -> mongodb-linux-i686-2.4.3

  • 創建data文件夾:mkdir /home/max/mongo/data

  • 發起蒙戈:

蒙戈/ bin中/ mongod的--dbpath =蒙戈/數據--fork --logpath的/ var/wefi /日誌/ feederliteRC/mongodb的。日誌

所有工作正常,可以連接mongoVUE監視器工具。 (從Windows7的)

現在,我嘗試從PHP連接到BongoDB:

我安裝的驅動程序爲PHP:

sudo的PECL安裝蒙戈

上:php -i | grep mongo我得到:

mongo 
mongo.allow_empty_keys => 0 => 0 
mongo.chunk_size => 262144 => 262144 
mongo.cmd => $ => $ 
mongo.default_host => localhost => localhost 
mongo.default_port => 27017 => 27017 
mongo.is_master_interval => 15 => 15 
mongo.long_as_object => 0 => 0 
mongo.native_long => 0 => 0 
mongo.ping_interval => 5 => 5 
OLDPWD => /usr/share/pear/doc/mongo 
_SERVER["OLDPWD"] => /usr/share/pear/doc/mongo 

我加到php.ininano /etc/php.ini):extension=mongo.so

並重新啓動httpd/etc/init.d/httpd restart

從代碼:

try { 
     // open connection to MongoDB server 
     $conn = new Mongo('localhost'); 
} catch (MongoConnectionException $e) {    
     die('Error connecting to MongoDB server'); 
     } catch (MongoException $e) {   
     die('Error: ' . $e->getMessage()); 
    } 

PHP看到new Mongo但我得到異常:"Error connecting to MongoDB server

奇怪的是,mongoDB運行PHP驅動程序,但它沒有看到mongoDB。

有人可以幫助我,

[編輯]

「連接失敗的MongoDB服務器錯誤連接到:本地主機:27017:連接被拒絕」

我是否需要添加smoething到php.ini

+1

嘗試增加$ E->的getMessage()到您的第一個catch塊的輸出(你打的那個),你可能知道問題是什麼。 – leftclickben

+0

謝謝,請參閱我的編輯 –

+0

您的連接字符串錯誤,應該是'mongodb:// localhost'嘗試看看它是否有所改進 – Sammaye

回答

3

我覺得你的連接應該是這樣的:

$conn = new Mongo("mongodb://localhost"); 

您也可以更好的利用MongoClient因爲蒙戈已廢棄版本1.3.0。

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

參見更多信息PHP手冊: http://nl.php.net/manual/en/mongo.connecting.auth.php

編輯 如果本地主機將無法正常工作使用的IP地址,而不是(感謝馬克西姆Shoustin)

對於蒙戈它會成爲:

$conn = new Mongo("mongodb://127.0.0.1"); 

或者如果您使用MongoClient它將會我是這樣的:

$m = new MongoClient("mongodb://127.0.0.1", array("username" => $username, "password" => $password)); 
+0

'Mongo()'仍然有效,這不是問題 – Sammaye

+0

@正如我所說的,Sammaye已被棄用。我不說你不能再使用它了。同樣是與你仍然可以使用它,但你不應該這樣做,因爲它已被棄用。最好的方法是使用最後的方法而不是舊的方法。 – Perry

+0

它被棄用,但它仍然有效,你的答案並沒有解決問題編輯:好的,我真的看到你修改連接字符串,沒有看到最初 – Sammaye

0

我找到了一步一步的指導,但在我看來你做得很對。也許this可以幫助你。在這種情況下,他不使用連接參數可言,但我敢肯定它應該是一個IP或連接字符串臨客這樣的:

mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] 
+0

您擁有的鏈接不起作用 –

0

今後任何人都喜歡我,得到了與開始時很迷茫MongoDB在2016年。前面提到的連接方法現在已被棄用。

要使用的版本,如3.2連接到MongoDB的,你將需要:

$mongo = new Mongo\Driver\Manager('mongodb://localhost'); // if you have MongoDB PHP drivers and no Library 
//Alternatively (recommended) 
$mongo = new Mongo\Client; // for default local connection - MongoDB library required