0

好奇心からMongoDBをいじくり回すためだけに、クイッククラウドサーバーをデプロイしました。インストールされ、動作します。次のようなテストDB/テーブルを作成しました。

 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/>';
  }

そして私はこのエラーを受け取ります:

致命的なエラー:キャッチされない例外「MongoConnectionException」とメッセージ「接続に失敗しました:165.225.130.252:27017:トランスポートエンドポイントが接続されていません」/home/moosex/public_html/info.php:4スタックトレース:#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 シェルを使用してサーバーに接続できますか?

于 2013-01-31T20:59:30.673 に答える