php无法连接到mongodb套接字

时间:2013-05-28 22:47:14

标签: php sockets mongodb

使用nginx,php-fpm和mongodb设置一个全新的开发ubuntu 13.04服务器。以下代码行会杀死我在生产ubuntu 12.10服务器上运行良好的所有脚本

$m = new MongoClient("mongodb://user:pass@/tmp/mongodb-27017.sock/database");

错误

  

警告:MongoClient :: __ construct():php_network_getaddresses:   getaddrinfo失败:名称或服务未知    /var/www/app/php/db.php 4 行上<
b>   致命错误:未捕获的异常'MongoConnectionException'   消息'无法连接到:/tmp/mongodb-27017.sock:0:   php_network_getaddresses:getaddrinfo失败:名称或服务没有   已知'在/var/www/app/php/db.php:4堆栈跟踪:

     

0 /var/www/app/php/db.php(4):MongoClient-&gt; __ construct('mongodb:// app ...')

     

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

     

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

     在 4 > /var/www/app/php/db.php

3 {main}

我已经玩弄了一天半,但无法理解。当我连接到localhost时,它工作,但我真的更喜欢套接字。任何想法?

2 个答案:

答案 0 :(得分:0)

当通过Unix域套接字连接时,PHP驱动程序不支持将凭据作为URI的一部分传递。

您需要在$ options数组(第二个参数)中传递用户名和密码。

答案 1 :(得分:0)

Ubuntu 14.04,Php 5.59,MongoDB shell版本:2.4.9

我通过以下方式让我的工作:

我必须将我的联系从$m = new Mongo(); // connect更改为$m = new Mongo("mongodb://127.0.0.1"); // connect

出于某种原因,似乎/ etc / hosts文件停止被称为localhost for 127.0.0.1,它抛弃了默认的mongodb连接器,所以我必须明确。叹息。