0

出于好奇,部署了一个快速的云服务器只是为了托管一个 MongoDB 来修补它。它已安装并且可以工作。像这样制作了一个测试数据库/表:

 db.items.insert({ name: 'eggs', quantity: 10, price: 1.50 })
 db.items.insert({ name: 'bacon', quantity: 3, price: 3.50 })
 db.items.insert({ name: 'tomatoes', quantity: 30, price: 0.50 })

当我运行db.items.find({})所有项目时,一切都很好。

现在在 PHP 中,当我从另一台服务器连接到该数据库时,我会这样做:

  // open connection to MongoDB server
  $conn = new Mongo('mongodb://theAdmin:Gold1234@165.225.130.252:27017');

  // access database
  $db = $conn->test;

  // access collection
  $collection = $db->items;

  // execute query
  // retrieve all documents
  $cursor = $collection->find();

  // iterate through the result set
  // print each document
  echo $cursor->count() . ' document(s) found. <br/>';  
  foreach ($cursor as $obj) {
    echo 'Name: ' . $obj['name'] . '<br/>';
    echo 'Quantity: ' . $obj['quantity'] . '<br/>';
    echo 'Price: ' . $obj['price'] . '<br/>';
    echo '<br/>';
  }

我得到这个错误:

致命错误:/home/moosex/public_html/info.php:4 中的未捕获异常“MongoConnectionException”和消息“无法连接到:165.225.130.252:27017:传输端点未连接”堆栈跟踪:#0 /home/moosex /public_html/info.php(4): Mongo->__construct('mongodb://[theA...') #1 {main} 在第 4 行的 /home/moosex/public_html/info.php 中抛出

我已经查找并尝试了几种不同的连接方式,但仍然无法获得它。我应该如何远程连接?

顺便说一句,那是该服务器的实际用户名密码和地址(那里除了鸡蛋培根和西红柿外什么都没有),如果你能连接到它,上帝保佑你哈哈。

4

1 回答 1

1

为了能够像这样调试“随机怪异”,打开内部驱动程序日志记录非常有用。驱动程序在幕后做了很多事情,并且可以吐出各种重要的调试信息。

在脚本顶部添加以下内容:

<?php
MongoLog::setLevel(MongoLog::ALL);
MongoLog::setModule(MongoLog::ALL);
?>

默认情况下,记录器会输出“php 错误消息”(E_NOTICE/E_WARNING),如果您启用了 error_log,请确保检查该文件以获取结果。

对于您的(稍作修改的)连接字符串,我得到以下结果

Notice: PARSE   INFO: Parsing mongodb://theAdmin:Gold1234@localhost:27027 in Command line code on line 1
Notice: PARSE   INFO: - Found user 'theAdmin' and a password in Command line code on line 1
Notice: PARSE   INFO: - Found node: localhost:27027 in Command line code on line 1
Notice: PARSE   INFO: - Connection type: STANDALONE in Command line code on line 1
Notice: PARSE   INFO: - No database name found for an authenticated connection. Using 'admin' as default database in Command line code on line 1
Notice: CON     INFO: mongo_get_read_write_connection: finding a STANDALONE connection in Command line code on line 1
Notice: CON     INFO: connection_create: creating new connection for localhost:27027 in Command line code on line 1
Notice: CON     WARN: connection_create: error while creating connection for localhost:27027: Invalid argument in Command line code on line 1
Notice: CON     WARN: Couldn't connect to 'localhost:27027': Invalid argument in Command line code on line 1

我怀疑两端都有防火墙问题。你可以使用 mongo shell 连接到服务器吗?

于 2013-01-31T20:59:30.673 回答