我遇到以下代码时出现问题:
$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
有任何帮助吗?
答案 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集合而不是指定集合进行身份验证,可能会提供对此函数的访问。