2016-04-01 7 views
1

Я установил php7 + MongoDB 3.2 в стек Ubuntu:php7 терпит неудачу

PECL установить MongoDB (это новый драйвер для > 5.99.99)

Я также использую пакет последней PHP mongodb/mongodb как обертка.

, но у меня есть проблемы с аутентификацией пользователя.

new \MongoDB\Client('mongodb://root:[email protected]:27017'); 

он выходит из строя из механизма аутентификации, водитель пытается удостоверяются как MONGODB-CR (устаревшее в> 3,0) вместо SCRAM-SHA-1

Конечно, аутентификация хорошо работает с клиентом оболочки Монго:

mongo someip:27017/admin -u root -p "123456" 

Вопрос в том, как указать механизм аутентификации в php-драйвере? (Конструктор \MongoDB\Client принимает некоторый массив $driverOptions = []), есть ли возможность его указать?

Спасибо!

ответ

2

Убедитесь, что вы используете последний драйвер. Поскольку новым значением по умолчанию должно быть SCRAM-SHA-1.

Я проверил тест в условиях окружающей среды: php7, ubuntu14, MongoDB v3.2.x, mongo-php-library =^1.0.0 и mongodb php driver v1.1.5. Что работает, как ожидалось.

require_once __DIR__ . "/vendor/autoload.php"; 
$client = new MongoDB\Client("mongodb://user:[email protected]:port/admin"); 
$collection = $client->selectCollection("databaseName", "collection"); 
$cursor = $collection->find(); 

foreach ($cursor as $document) { var_dump($document); } 

Я также протестировали authMechanism параметр в URI, например:

$client = new MongoDB\Client("mongodb://user:[email protected]:port/admin?authMechanism=SCRAM-SHA-1"); 

Который также работает, хотя вы не должны указывать Катись-SHA-1, если вы используете новый драйвер PHP. Если вы запустите php --ri mongodb, вы должны увидеть нечто похожее на (для версии 1.1.5):

mongodb 
mongodb support => enabled 
mongodb version => 1.1.5 
mongodb stability => stable 
libmongoc version => 1.3.3 
libbson version => 1.3.3