使用身份验证使用Mongo 2.4.0运行MongoDB-> execute()时,PHP Mongodb驱动程序会出现“未授权”错误

时间:2013-03-28 23:49:34

标签: mongodb-php

我遇到以下代码时出现问题:

$m = new MongoClient('mongodb://sf:xxxxxx@localhost/sf');
$collections = $m->selectDB("sf")->getCollectionNames();
var_dump($collections); // prints collection names as expected

$collections = $m->selectDB("sf")->execute('function (){ return db.getCollectionNames(); }');
var_dump($collections); // gives error "unauthorized"

这已转载于:

Mongo 2.4.0,MongoDB PHP驱动程序1.3.6,PHP版本5.3.8,Windows 7 32位

Mongo 2.4.0,MongoDB PHP驱动程序1.3.5,PHP版本5.3.2,Ubuntu 10.04.4

有任何帮助吗?

2 个答案:

答案 0 :(得分:0)

PHP的执行只是一个调用eval的包装器,需要管理员访问才能使用。

来自文档:

With authentication enabled, eval will fail during the operation
if you do not have the permission to perform a specified task.
Changed in version 2.4: You must have full admin access to run.

答案 1 :(得分:0)

检查MongoDB的连接字符串。如果它包含数据库,请尝试将其删除。例如:

的mongodb:// SF:[通] @本地/ SF

的mongodb:// SF:[通] @本地/

完成此操作后,在使用身份验证实例化客户端后选择数据库。我相信这应该允许你使用这个功能。我相信这会导致对admin集合而不是指定集合进行身份验证,可能会提供对此函数的访问。