无法使用PHP在mongodb上进行身份validation

我做了什么:

/etc/mongod.conf启用身份validation

 auth = true 

按照doc中的说明从shell创build第一个用户:

 db.createUser( { user: "admin", pwd: "admin", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }) 

使用admin用户,我创build了一个root用户来访问mongodb

 db.createUser( { user: "root", pwd: "root", roles: [ "root" ] }) 

直到这一点都工作正常,因为我可以从mongo shellauthentication:

 mongo --port 27017 -u root -p root admin 

它完美的工作,因为我可以在数据库中的所有操作。

问题是

当我尝试使用相同的root用户从PHP进行身份validation时:

 $client = new MongoClient("mongodb://root:root@localhost:27017/admin"); 

它给出了错误:

无法连接到:localhost:27017:使用用户名“root”的数据库“admin”身份validation失败:auth失败

为什么不能在MongoDB上进行身份validation,如果使用相同的凭据进行身份validation,可以正常使用mongo shell?

其他说明:

  • 如果我禁用身份validationPHP连接完美,并且mongo类正常工作
  • 我试图创build不同的用户,但是回应是一样的
  • 我使用的是Mongo 3.0.1,PHP 5.5.9和Ubuntu 14.04.2 LTS 64bit

问题解决了:显然这是PHP mongo驱动程序版本1.4的问题/错误导致的

我已经升级到1.6版的驱动程序:

 pecl upgrade mongo 

现在认证工作。

我有同样的问题,在我的情况下,我使用apt-get安装了mongo

 apt-get install php5-mongo 

而似乎Ubuntu的软件库仍然是1.4版本,尚未更新软件包。 如果你想在Ubuntu上安装mongo,你应该使用pecl选项

 pecl install mongo 

切勿使用apt-get来安装mongo for php。

根据mongo在Windows版本中的安装说明 ,mongo.dll必须复制到系统路径,例如c:\ windows。 我测试过,是的,它的工作原理。