"致命错误:未捕获的异常' MongoConnectionException'消息'无法连接到:/tmp/mongodb-27017.sock:0:拒绝连接''"

时间:2016-01-27 23:15:00

标签: php mongodb

我有以下代码:

$this->connection = new MongoClient($uri, $options);
$this->database = $database;

然而,在第$this->connection行我得到:

Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: /tmp/mongodb-27017.sock:0: Connection refused' in...

如果我输出以下内容:

var_dump($uri, $options); exit;

我明白了:

string(33) "mongodb:///tmp/mongodb-27017.sock" array(1) { ["connect"]=> bool(true) } 

这是在我的开发环境中,我没有使用Mongo的任何用户名/密码,因为我可以单独使用mongo reputation登录Mongo shell。从那里我可以查看收藏和文件。

最初我被Permissions拒绝,但我将dev /tmp/mongodb-27017.sock的权限更改为777.现在我得到了#34;连接被拒绝了#34;。

无论如何,下面是我ll /tmp/目录中的文件:

srwxrwxrwx  1 mongodb mongodb     0 Jan 28 07:47 mongodb-27017.sock=

任何人都知道问题是什么,或者我如何进一步调试?感谢

2 个答案:

答案 0 :(得分:1)

我建议在PHP中连接不要与您的进程可能无权访问的套接字连接。如果您修改套接字的权限,那么它只是临时的。当你停止mongo db它将删除套接字时,下次启动它时,权限将恢复为默认值(700我认为)。

而是连接到默认端口(27017)mongo在127.0.0.1上打开。

将PHP中的连接字符串更改为以下内容:

$uri = "mongodb://127.0.0.1";
$this->connection = new MongoClient($uri, $options);

答案 1 :(得分:0)

$connection=  new \MongoClient("mongodb://localhost:27017");
return $this->db = $connection->selectDB($config['dbname']);

尝试连接本地mongoDB。