我正在尝试使用PHP作为脚本语言执行一个简单的插入查询。但是,我在执行它时得到以下错误实例。
array(2) { ["ok"]=> float(0) ["errmsg"]=> string(12) "unauthorized" }
我在本地计算机上编写了以下代码,并且运行良好:
$mongoClient = new MongoClient('localhost');
$mongoDB=$mongoClient->test_db;
$mql='db.products.insert( { item: "card", qty: 15 } );';
$data=$mongoDB->execute($mql);
var_dump($data);die;
但是,当我在创建MongoClient对象时使用以下代码段在开发服务器上运行相同的代码时,出现了上述错误。
$mongoClient=new MongoClient('mongodb://username:password@dbServer:port/test_db');
$mongoDB=$mongoClient->test_db;
$mql='db.products.insert( { item: "card", qty: 15 } );';
$data=$mongoDB->execute($mql);
var_dump($data);die;
在同一台数据库服务器上,我可以通过外壳执行相同的查询。从代码中,我可以看到我试图两次选择数据库,但是如果这可能是错误以及如何消除该错误,我将感到非常困惑。如果那不是错误,那么我太无知了。
我将RackSpace云服务器和ObjectRocket(由Rackspace使用)用于特定的MongoDB实例,但是无论如何都不应与该问题相关。请帮帮我。
您不是在使用PHP,而是在逃避JS,而是在使用PHP调用MongoDB的eval命令。MongoDB的更高版本要求运行eval的用户具有对数据库的完全不受控制的访问权限(超级管理员)。
http://docs.mongodb.org/manual/reference/command/eval/
在版本2.4中进行了更改:您必须具有完全的管理员访问权限才能运行。
您应该做的是不使用eval:
$mongoDB->products->insert(['item' => 'card', 'qty' => 15])
像这样
还可以mql
吗?这不是您正在编写的mongo查询语言,而是JavaScript。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句