使用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时,它工作,但我真的更喜欢套接字。任何想法?
答案 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连接器,所以我必须明确。叹息。