2013-05-28 3 views
2

그냥 nginx, php-fpm 및 mongodb를 사용하여 새로운 개발 우분투 13.04 서버를 설정하십시오. 다음의 코드는 경고 생산 우분투 12.10 서버PHP가 mongodb 소켓에 연결하지 못했습니다

$m = new MongoClient("mongodb://user:[email protected]/tmp/mongodb-27017.sock/database"); 

오류

에 큰 실행중인 나의 모든 스크립트를 죽이고 : MongoClient :: __ 구조() : php_network_getaddresses를 : 실패한다 getaddrinfo 이름 여부 라인에 /var/www/app/php/db.php에 알려진 서비스 4

치명적인 오류 : 'MongoConnectionException'메시지와 함께 'MongoConnectionException'이 (가) catch되지 않았습니다. '/tmp/mongodb-27017.sock:0 : php_network_getaddresses : getaddrinfo failed : 이름/서비스가'/ var/www/app에 없습니다 '라는 메시지가있는 /php/db.php:4 스택 추적 :

0 /var/www/app/php/db.php(4는) : (> __construct를 MongoClient- 'MongoDB를 : // 응용 프로그램을 ...')

1 /var/www/app/admin/loggedin.php (3) : ('/ var/www/app ...')

2 /var/www/app/admin/index.php (1) : require ('/ var/www/app ...')

,

3 {주}이 줄에 /var/www/app/php/db.php에 던져 4

내가 하루 반 수있는 '이 놀겠다는 거 봤는데 그것 알아낼. 내가 localhost에 연결할 때 작동하지만 소켓을 선호합니다. 어떤 아이디어?

답변

0

PHP 드라이버는 Unix 도메인 소켓을 통해 연결할 때 URI의 일부로 자격 증명을 전달하는 것을 지원하지 않습니다.

$ options 배열 (두 번째 인수)에 사용자 이름과 암호를 전달해야합니다.

+4

사실, 사실이 아닙니다. 우리는 이것을 지원합니다. 1.4.1에서 수정 된 PHP-846 버그가있을 것입니다. – bjori

0

우분투 14.04, PHP는 5.59, MongoDB의 쉘 버전 : 내가 전달하여 작업 광산을 가지고 2.4.9

다음

내가 들어 $m = new Mongo("mongodb://127.0.0.1"); // connect

-$m = new Mongo(); // connect에서 내 연결을 변경했다 어떤 이유에서/etc/hosts 파일이 기본 mongodb 커넥터를 버리고 127.0.0.1에서 localhost라고 불리는 것을 멈추었 기 때문에 나는 명시 적이어야했습니다. 한숨.

관련 문제