問題タブ [libmongoc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - MongoDB 例外: サーバーはワイヤ バージョン 0 を報告しますが、libmongoc のバージョンには少なくとも 3 が必要です
PHP 7.0.13、MAMP、および MongoDB を使用しています。PHP 用の MongoDB 拡張機能がインストールされています。
私は次のものを持っています:
このコンテキストで「ワイヤー」とは何を指し、この問題の解決策はありますか?
c++ - SSL/TLS で mongodb に接続できない
libmongoc を介して SSL 経由でローカル mongodb インスタンスに接続しようとしています。SSL を使用しない場合、接続は正常に機能し、CRUD 操作を正常に実行できますが、SSL を有効にしてデータを取得しようとすると、mongoc_cursor_next()
関数が長時間ハングし、終了しfalse
ます。
サーバー側では、ログは、関数内でスタックしている間、クライアントがサーバーに接続し、接続が受け入れられ、切断され、数分後にスタックが解除されるまで繰り返されることを示しています。
最初は自分のコードに問題があると思っていたので、オプションを指定して libmongoc ライブラリを再構築し、-DENABLE_TRACING=1
役立つものを特定できるかどうかを確認しました。しかし、驚いたことに、これで問題が「修正」されました。 でハングすることはなくmongoc_cursor_next()
なり、ドキュメントは正常に返されますが、トレースによって stdout が過剰なデバッグ情報でいっぱいになり、送受信された TCP パケットがダンプされます。トレースを有効にすると、問題はなくなります。トレースを無効にすると、元に戻ります。
関数を介して SSL オプションを設定しようとしましたmongoc_client_pool_set_ssl_opts
が、結果は URI を介してそれらを渡すのと同じです。クライアントでも証明書を使用しようとしましたが、うまくいきませんでした。機能した唯一のことは、クライアントで SSL を使用して libmongoc を構築するか、-DENABLE_TRACING=1
SSL を使用しないことでした。
私は信頼署名証明書を持っていないので、自己署名証明書を使用していることに関連するものかどうかはわかりません。しかし、sslAllowInvalidCertificates=true
これはモック データを使用した単なる開発データベースであるため、この要件を無視する必要があると考えました。
何か不足していますか?
私の環境:
クライアント:
Ubuntu 18.10 x64、libmongoc 1.13.1 / 1.9.5 (両方をテスト済み)、GCC 8.2.0
Windows 10 Pro、libmongoc 1.9.5、MSVC 2015。
サーバー:
Ubuntu 18.10 x64
MongoDB 4.0.6 (git バージョン: caa42a1f75a56c7643d0b68d3880444375ec42e3)
OpenSSL バージョン: OpenSSL 1.1.1 2018 年 9 月 11 日
私の例のクライアント:
私のサーバー構成 (mongod.conf):
編集:
さらにテストした結果、プールなしで接続すると、 でスタックしないことがわかりましたmongoc_cursor_next()
。しかし失敗し、次をmongoc_cursor_error()
返します:
また、mongo CLI と Compass を使用して、SSL 経由で正常に接続できます。
php - PHP7.2 laravel 経由で mongodb に接続しているときに、次のエラーが発生します。
エラー: SCRAM_SHA_256 認証メカニズムには、ENABLE_SSL で構築された libmongoc が必要です
構成しようとしましたが、ターミナルで実行するとこれが見つかりました
php -i | grepモンゴ
mongodb libmongoc バンドル バージョン => 1.16.2 libmongoc SSL => 有効な libmongoc SSL ライブラリ => OpenSSL libmongoc crypto => 有効な libmongoc 暗号ライブラリ => libcrypto libmongoc 暗号システム プロファイル => 無効化された libmongoc SASL => 有効化された libmongoc ICU => libmongoc 圧縮が無効化されました=> libmongoc 圧縮 snappy を有効化 => libmongoc 圧縮 zlib を無効化 => libmongocrypt バンドル バージョンを有効化 => 1.0.3 libmongocrypt crypto => libmongocrypt 暗号化ライブラリを有効化 => libcrypto mongodb.debug => 値なし => 値なし