2

只需使用 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 failed: Name or service not known in /var/www/app/php/db.php on line 4

致命错误:未捕获的异常“MongoConnectionException”,消息“连接失败” : /tmp/mongodb-27017.sock:0: php_network_getaddresses: getaddrinfo failed: Name or service not known' in /var/www/app/php/db.php:4 堆栈跟踪:

0 /var/www/app/php/db.php(4): MongoClient->__construct('mongodb://app...')

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

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

3 {main}在第4行的/var/www/app/php/db.php中抛出

我已经玩了一天半了,无法弄清楚。当我连接到本地主机时它可以工作,但我真的更喜欢套接字。有任何想法吗?

4

2 回答 2

0

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

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

于 2013-06-10T20:55:22.310 回答
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 的 127.0.0.1 ,这正在抛弃默认的 mongodb 连接器,所以我必须明确。叹。

于 2016-08-13T02:10:08.447 回答