无法通过php连接到远程主机上的MongoDB

时间:2011-10-02 19:52:59

标签: php mongodb remoting freebsd

我有这样的网络配置(参见链接 - http://s58.radikal.ru/i160/1110/4c/1c2c5d74edd0.jpg

其中: 笔记本 - 在Zend(Windows)上包含用于mongodb + web项目的Apache + php + mongodb + php驱动程序

路由器 - 虚拟站点(nat on 192.168.5.23 interface + ipfw)

natd.conf:

interface le0
same_ports
use_sockets
redirect_port tcp 192.168.5.23:27017 27017
redirect_port tcp 192.168.5.23:27017 27017

ipfw的:     允许从任何

虚拟站2 - 仅包含mongodb(没有php,apache或mongodb php驱动程序)

1 - 从笔记本电脑ping到mongodb主机并向后工作。

2 - 虚拟mongodb主机上的shell:mongo 192.168.5.20:27017 - 成功连接到笔记本的mongodb

3 - 尝试从笔记本电脑连接到虚拟主机导致此类错误:

C:\mongodb1.8.2\bin>mongo 192.168.9.21:27017
MongoDB shell version: 1.8.2
connecting to: 192.168.9.21:27017/test
Sun Oct 02 22:31:14 Error: couldn't connect to server 192.168.9.21:27017 shell/mongo.js:81
exception: connect failed

4 - 尝试在php项目中使用带有DB的远程主机(www.vm.lcl):

an exception occured while bootstrapping

connecting to vm-db1.lcl failed: Unknown error
Stack Trace:

 #0 C:\www\vm-db1.lcl\library\Zirrk\Database\MongoConnection.php(16): Mongo->__construct('vm-db1.lcl')

请给我建议 - 我应该在哪个方向搜索我的错误! 非常感谢!

1 个答案:

答案 0 :(得分:1)

我通过更改 natd.conf

中的规则来解决此问题
redirect_port tcp 192.168.5.23:27017 27017

要     redirect_port tcp 192.168.5.23:27017 192.168.9.21:27017

在了解如何修复它之前,我在虚拟网络(192.168.9.0/24)web-server(192.168.9.11)中使用apache + php + mongo-php-driver(mongodb - 未安装)创建,并尝试连接到192.168.9.21

$m = new Mongo("mongodb://192.168.9.21:27017");

这没有意义。我花了一整天的头脑风暴和谷歌搜索信息,但仍然没有。 (错误是在连接到服务器时超时)。然后我休息几个小时,并理解,在我的情况下,所有流量都通过Freebsd-gateway主机并添加到 natd.conf

redirect_port tcp 192.168.9.11:27017 192.168.9.21:27017

重启gate-way服务器,它开始工作了!