2017-02-15 3 views
0

私は、従来のmongo php 1.6.10ドライバと1.2.5 mongodb phpドライバの両方をインストールしています。 Debian 8ではPHPのバージョンが5.6.29です。php mongodb with x509

レガシードライバとサポートされているドライバはどちらも基本認証情報を使って接続できます。

レガシードライバのみがx509証明書を使用して接続できます。

サポートされているドライバは、コレクションに対して単純なfindOneを実行しようとすると、次の例外が発生します。

私はここでのMongoDBドライバ http://php.net/manual/en/set.mongodb.php

ためのMongoDBクライアントライブラリを使用しています

PHP Fatal error: Uncaught exception 'MongoDB\Driver\Exception\RuntimeException' with message 'SCRAM Failure: invalid salt length of 0 in sasl step2' 

は、私は答えはURI文字列内authMechanismオプションを渡すことです

<?php 
$server = 'mongodb://uat-a:27017,uat-b:27017,uat-c:27017'; 
$options = [ 
    'replicaSet' => 'rs-uat', 
    'username' => 'CN=my-user,OU=user,O=NA,L=Place,ST=State,C=GB', 
    'authMechanism' => 'MONGODB-X509', 
    'authSource' => '$external', 
    'ssl' => true, 
    'connect' => true, 
]; 
$driverOptions = [ 
    'context' => stream_context_create(
     [ 
      'ssl' => [ 
       'local_cert' => '/etc/local-cert.pem', 
       'cafile' => '/etc/cafile.pem', 
      ], 
     ] 
    ), 
]; 
$database = 'uatdata'; 

$client = new MongoDB\Client($server, $options, $driverOptions); 
$db = $client->selectDatabase($database); 

$doc = $db->selectCollection('errors')->findOne([], ['projection' => ['timestamp' => 1, 'uri' => 1]]); 

答えて

0

を使用していたコードを言い換えています。例えば

mongodb://uat-a:27017,uat-b:27017,uat-c:27017/?authMechanism=MONGODB-X509

より詳細な説明はhttps://jira.mongodb.org/browse/PHPC-914

ここで見つけることができます