【问题标题】:Can't connect to MongoDB on remote host via php无法通过 php 连接到远程主机上的 MongoDB
【发布时间】:2011-10-02 19:52:58
【问题描述】:

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

在哪里: Notebook - 包含 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 项目 (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')

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

【问题讨论】:

    标签: php mongodb remoting freebsd


    【解决方案1】:

    我已经通过更改 natd.conf

    中的规则解决了这个问题
    redirect_port tcp 192.168.5.23:27017 27017
    

    到 重定向端口 tcp 192.168.5.23:27017 192.168.9.21:27017

    在了解如何修复它之前,我已经使用 apache+php+mongo-php-driver(mongodb - 未安装)在虚拟网络(192.168.9.0/24)网络服务器(192.168.9.11)中创建,并尝试连接到 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
    

    重启网关服务器,它就开始工作了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 2022-01-13
      • 2016-11-27
      相关资源
      最近更新 更多