1

我在使用以下代码时遇到问题:

$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

有什么帮助吗?

4

2 回答 2

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.
于 2013-03-28T23:54:02.250 回答
0

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

mongodb://sf:[pass]@localhost/sf

mongodb://sf:[pass]@localhost/

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

于 2013-09-23T00:50:09.533 回答