MongoDB、PHP 和 Ubuntu - 未找到候选服务器


MongoDB, PHP & Ubuntu - No candidate servers found

我一直收到此错误,但找不到解决方案。

我把mongoDB和PHP一起安装在Ubuntu服务器上,安装工作正常,我可以通过终端(带有putty的SSH)毫无问题地访问mongo,但是,当我尝试通过任何PHP应用程序访问它时,即使日志显示连接已被接受,我也得到"找不到候选服务器"。

我尝试将bind_ip设置为服务器 ip、127.0.0.1 和本地主机,但没有任何效果。

额外信息: - 我以独立模式运行。 - 使用 mongod 启动 mongo --fork --auth --port 27017 --logpath/var/log/mongodb/server1.log --logappend --dbpath/var/lib/mongodb/data/db/

有人有任何想法吗?

谢谢。

当我运行带有复制功能的 MongoDB 时(replSet 选项),并且由于某种原因没有可用的主服务器时,我似乎会发生此错误。

例如,重新启动主数据库后,选择新的主数据库似乎需要一段时间,只有辅助数据库可用。

说您没有使用复制运行,而是处于"独立"模式......在这种情况下,我看到的其他问题建议确保你运行的是最新的MongoDB和PHP驱动程序版本(来自Ubuntu 10gen apt-get源代码)。还要仔细检查您是否可以从 PHP 打开的同一服务器访问 mongo,以防出现防火墙问题:mongo mongohost1.server.com:27107 -uUSERNAME -pPASSWORD

查看要传递给MongoClient() PHP 驱动程序的连接字符串会很有帮助。如果不使用复制,它将如下所示:

mongodb://USERNAME:PASSWORD@localhost:27017

如果您使用复制,将看起来像这样:

mongodb://USERNAME:PASSWORD@host1.server.com:27017,host2.server.com:27017,host3.server.com:27017/?replicaSet=my_replica_set

如果使用复制,请确保将主 Mongodb 服务器指定为其中一个服务器(驱动程序应检测哪个服务器是主服务器,并检测主服务器是否更改)。

如果这一切都设置正确,请仔细检查您是否确实有一个主数据库。可能有问题,导致MongoDB没有选择初选。您可以登录到 Mongo 命令行/控制台应用程序并运行以下命令以检查所有副本集成员的状态:

rs.status()

我正在运行PHP 5.3,MongoDB 2.4.8,MongoDB PHP Driver 1.4.5,Ubuntu 12.04。

(我认为这篇旧帖子以某种方式得到了解决,但我只是发现自己在这里遇到了类似的问题,所以我想我可能会提供一个答案来帮助人们将来解决他们的问题。