2014-02-06 3 views
-1
<?php 

$m = new MongoClient('mongodb://localhost', array(
    'username' => 'wa', 
    'password' => 'password', 
    'db'  => 'wa' 
)); 

이 코드 조각을 사용하여 연결하고 MongoDB 컬렉션이나 데이터베이스에 데이터를 삽입/찾기 위해 PHP에서 명령을 실행하려고합니다.MongoDB PHP 연결이 작동하지 않습니다.

MongoDB를 설치하고 mongo.so 확장자를 php.ini에 추가했습니다.

내가 뭘 잘못하고 있니?

+0

오류가 발생하지 않았습니다. 지금 디스플레이 오류 켜기. – user3093095

+0

연결이되지 않으면'MongoConnnectionException'을 던져야합니다. – Phil

+0

http://puu.sh/6Ms3R.png from my phpinfo(); – user3093095

답변

0

명령 줄에서 연결 코드 만 실행할 수 있습니까? 또한이 형식으로 연결 옵션을 전달해야합니다

MongoDB를 : // [사용자 이름 : 암호 @] host1의의 [: 포트 1] [호스트 2의 [: PORT2 :], ...]/DB

사용이 :

<?php 

    $m = new MongoClient('mongodb://wa:[email protected]/wa'); 

?> 

명령 줄에서 발생하는 오류를 던져 진단하기 쉬운 것입니다. 응답은 자기 설명 적이어야합니다. 가능한 원인 :

  1. 당신은 localhost에 연결하고이없는이 시스템 mongod 또는 mongos를 실행. [따라서 호스트와 가능하면 포트를 변경하십시오.]
  2. 사용자 자격 증명 그것은 당신이 당신의 자신의 컴퓨터에서 개발하는 경우 그들을 필요로하지 않을 것 같은 경우 1, 사용자 자격 증명을 제공하고있는 바로 그 사실에 의해 적용 것으로 보인다

올바르지 않습니다. 프로덕션 환경에서 응용 프로그램과 동일한 서버에서 MongoDB를 실행하는 것은 매우 드뭅니다.

+0

OP에서와 같이'$ options' 배열을 사용하고'$ server' 문자열에 인증 자격 증명을 포함하는 것이 모두 유효합니다. 암호가 파싱에 영향을 미칠 수있는 특수 문자가있는 경우'$ options' 배열은 더 신뢰할 수 있습니다. – jmikola

+1

@jmikola 그대로 유효한 연결 형식에 동의했습니다. 나는 주로'localhost' 연결이 사실이 아니었고 이것이 원격 호스트라는 가능성에 주목했다. –

관련 문제