2013-05-28 77 views
2

只用nginx,php-fpm和mongodb设置了新的开发ubuntu 13.04服务器。下面的代码行杀死所有我的脚本那是在生产的Ubuntu 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不知道线服务

致命错误未捕获异常'MongoConnectionException' 带消息'无法连接到:/tmp/mongodb-27017.sock:0: php_network_getaddresses:getaddrinfo失败:名称或服务不是 已知'in/var/www/app /php/db.php:4堆栈跟踪:

0 /var/www/app/php/db.php(4):MongoClient- > __construct( '的MongoDB://应用...')

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

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

{3}主扔在/var/www/app/php/db.php上线

我一直是这样玩弄了一天半,并可以”弄明白了。它在我连接到本地主机时起作用,但我更喜欢套接字。有任何想法吗?

回答

0

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

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

+4

其实,那不是真的。我们确实支持这一点 - 您可能遇到了1.4.1版固定的PHP-846错误。 – bjori

0

的Ubuntu 14.04,PHP 5.59,MongoDB的外壳版本: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连接器,所以我必须明确。叹。