2013-03-28 1 views
1

나는 다음과 같은 코드에 문제가 있어요을 사용하여 몽고 2.4.0로 MongoDB-를 실행 "권한이없는"오류> (실행)을 제공합니다PHP MongoDB의 드라이버가 인증

$m = new MongoClient('mongodb://sf:[email protected]/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" 

이이 재현되었습니다

몽고 2.4.0, MongoDB를 PHP 드라이버 1.3.6, PHP 버전 5.3.8, 윈도우 7 32 비트

몽고 2.4.0, MongoDB를 PHP 드라이버 1.3.5, PHP 버전 5.3.2, 우분투 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. 
+0

고마워, 내 질문에 대한 답변! 그것은 그 사용법을 피해야한다는 것은 명백하지만, 당신은 어떤 산책 주위를 알고 있습니까? –

+0

실행중인 코드에는 내장 함수가 있습니다. http://www.php.net/manual/en/mongodb.getcollectionnames.php –

0

는 MongoDB를위한 연결 문자열을 확인합니다. 데이터베이스가 포함되어 있으면 제거하십시오.

하여 MongoDB : // SF [패스] @ 로컬 호스트/SF

MongoDB를

에 // SF 예 : [패스] @ 로컬 호스트/수행 그 후

, 클라이언트가 인증으로 인스턴스화 된 후에 데이터베이스를 선택하십시오. 나는 이것이 당신이 기능을 이용할 수 있어야한다고 생각합니다. 나는 인증이 지정된 콜렉션 대신에 admin 콜렉션에 대해 수행되고, 아마도이 기능에 대한 액세스를 제공한다고 믿습니다.