【问题标题】:"Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: /tmp/mongodb-27017.sock:0: Connection refused''"“致命错误:未捕获的异常 'MongoConnectionException' 带有消息 '无法连接到:/tmp/mongodb-27017.sock:0: 连接被拒绝''”
【发布时间】:2017-07-17 14:27:43
【问题描述】:

我有以下代码:

$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。从那里我可以查看收藏和文档。

最初我的权限被拒绝,但我将 dev /tmp/mongodb-27017.sock 的权限更改为 777。现在我收到“连接被拒绝”。

下面是我ll /tmp/ 目录中的文件:

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

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

【问题讨论】:

  • 你的 /tmp 目录的权限和所有权是什么?
  • 嗨。 tmp 目录是drwxrwxrwt 7 root root 20480 Jan 28 08:17 tmp/
  • 不使用$options,只使用$this->connection = new MongoClient($uri); 是否有效?
  • 另外,当你重新启动 mongo 时,你更改的权限将在重新创建套接字时恢复为 700。

标签: php mongodb


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:
    $connection=  new \MongoClient("mongodb://localhost:27017");
    return $this->db = $connection->selectDB($config['dbname']);
    

    试试这个连接本地 mongoDB。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 2015-10-25
      • 2021-03-20
      相关资源
      最近更新 更多