2

我试图弄清楚为什么 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 安装 mongo

上: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:连接被拒绝”

我需要添加 smoethingphp.ini吗?

4

4 回答 4

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));
于 2013-05-27T08:32:06.917 回答
0

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

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
于 2013-05-27T08:34:19.020 回答
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
于 2016-08-24T09:55:26.083 回答
0

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

/usr/sbin/setsebool -P httpd_can_network_connect 1

然后重新启动 Apache。

https://www.php.net/manual/en/mongo.installation.php

于 2020-02-16T04:27:34.287 回答