PHP无法创建与mongoDB的连接

时间:2013-05-27 08:26:50

标签: php mongodb

我试图找出为什么PHP驱动程序无法连接到mongoDB

  • PHP版本5.3.16(64位)
  • MongoDB:mongodb-linux-x86_64-2.4.3
  • 操作系统:CentOS版本5.2(最终版)

  • 添加了链接:mongo -> mongodb-linux-i686-2.4.3

  • 创建data文件夹:mkdir /home/max/mongo/data

  • 发起了mongo:

  

mongo / bin / mongod --dbpath = mongo / data --fork --logpath /var/wefi/logs/feederliteRC/mongodb.log

一切正常,可以与mongoVUE监视工具连接。 (来自Windows7)

现在,我尝试从PHP连接到BongoDB:

我为PHP安装了驱动程序:

  

sudo pecl install mongo

on:php -i | grep mongo我得到了:

mongo
mongo.allow_empty_keys => 0 => 0
mongo.chunk_size => 262144 => 262144
mongo.cmd => $ => $
mongo.default_host => localhost => localhost
mongo.default_port => 27017 => 27017
mongo.is_master_interval => 15 => 15
mongo.long_as_object => 0 => 0
mongo.native_long => 0 => 0
mongo.ping_interval => 5 => 5
OLDPWD => /usr/share/pear/doc/mongo
_SERVER["OLDPWD"] => /usr/share/pear/doc/mongo

我添加到php.ininano /etc/php.ini):extension=mongo.so

并重新启动httpd/etc/init.d/httpd restart

来自代码:

 try {
        // open connection to MongoDB server
        $conn = new Mongo('localhost');
} catch (MongoConnectionException $e) {            
        die('Error connecting to MongoDB server');
        } catch (MongoException $e) {           
        die('Error: ' . $e->getMessage());
    }

PHP看到new Mongo,但我得到例外:"Error connecting to MongoDB server

奇怪,mongoDB运行,PHP的驱动程序工作,但它没有看到mongoDB。

有人可以帮助我,

[编辑]

  

“连接到MongoDB服务器时出错连接失败:localhost:27017:拒绝连接”

我是否需要向php.ini添加smoething?

4 个答案:

答案 0 :(得分:3)

我认为你的联系应该是这样的:

$conn = new Mongo("mongodb://localhost");

此外,您可以更好地使用MongoClient,因为Mongo从版本1.3.0开始已弃用。

$m = new MongoClient("mongodb://localhost", array("username" => $username, "password" => $password));

有关更多信息,请参阅php手册: http://nl.php.net/manual/en/mongo.connecting.auth.php

修改 如果localhost无法使用IP地址(感谢Maxim Shoustin)

对于Mongo,它将是:

$conn = new Mongo("mongodb://127.0.0.1");

或者如果您使用MongoClient,它将是:

$m = new MongoClient("mongodb://127.0.0.1", array("username" => $username, "password" => $password));

答案 1 :(得分:0)

我找到了一步一步的指南,但在我看来,你做得对。也许this可以帮到你。在这种情况下,他根本不使用连接参数,虽然我很确定它应该是一个IP或连接字符串linke:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

答案 2 :(得分:0)

对于像我这样在2016年开始使用MongoDB时非常困惑的未来人。前面提到的连接方法现已弃用。

要使用3.2等版本连接到MongoDB,您需要:

$mongo = new Mongo\Driver\Manager('mongodb://localhost'); // if you have MongoDB PHP drivers and no Library
//Alternatively (recommended)
$mongo = new Mongo\Client; // for default local connection - MongoDB library required

答案 3 :(得分:0)

如果您正在运行SELinux,并且命令行连接有效,但PHP连接失败,请尝试以下命令。

/ usr / sbin / setsebool -P httpd_can_network_connect 1

然后重新启动Apache。

请参见https://www.php.net/manual/en/mongo.installation.php