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

MongoDB の接続文字列を確認します。データベースが含まれている場合は、削除してみてください。例えば:

mongodb://sf:[パス]@localhost/sf

mongodb://sf:[パス]@localhost/

これが完了したら、クライアントが認証でインスタンス化された後にデータベースを選択します。これにより、機能を利用できるようになるはずです。指定されたコレクションではなく管理コレクションに対して認証が行われ、おそらくこの機能へのアクセスが提供されると思います。

于 2013-09-23T00:50:09.533 に答える
0

PHP の execute は、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 に答える