未捕获的MongoDB驱动程序 - 致命错误未知

时间:2017-11-30 09:05:02

标签: php mongodb

好的,我已经在MongoDB Atlas上建立了一个帐户,并创建了一个集群。 借助这些细节,我现在使用mongo shell连接到服务器。 成功导入了JSON文件,我可以在连接到集群后从集合中查询和检索数据(仅限Mongo控制台)。

问题是当我在我的PHP文件中使用连接url来获取和显示数据时,我无法这样做,每次它都给我致命的错误 -

  

致命错误:未捕获   MongoDB \ Driver \ Exception \ AuthenticationException:身份验证   失败。在   E:\ XAMPP \ htdocs中\ MongoDB的\ MongoAutoLoad \ MongoDB的\ MongoDB中的\ src \工作\ Find.php:280   堆栈跟踪:#0   E:\ XAMPP \ htdocs中\ MongoDB的\ MongoAutoLoad \ mongodb的\ mongodb的\ SRC \操作\ Find.php(280):   的MongoDB \驱动\服务器 - >的executeQuery(' test.bf&#39 ;,   对象(MongoDB \ Driver \ Query),Object(MongoDB \ Driver \ ReadPreference))

     

1 E:\ XAMPP \ htdocs \ mongoDB \ MongoAutoLoad \ mongodb \ mongodb \ src \ Collection.php(527):   MongoDB \ Operation \ Find->执行(对象(MongoDB \ Driver \ Server))#2   E:\ XAMPP \ htdocs中\ MongoDB的\ bFreidan \ testCluster.php(8):   MongoDB \ Collection-> find()#3 {main}引入   E:\ XAMPP \ htdocs中\ MongoDB的\ bFreidan \ MongoAutoLoad \ MongoDB的\ MongoDB中的\ src \工作\ Find.php   在第280行

Find.php只是用于获取和显示集合数据的PHP库代码。这可能是什么问题?

请注意,如果我在本地mongodb

中执行此代码,此代码工作正常

这是我的PHP代码 -

<?PHP
require 'MongoAutoLoad/autoload.php'; // include Composer's autoloader
$client = new MongoDB\Client(
    'mongodb://<ClusterUsername>:<ClusterPassword>@cluster0-shard-00-00-91fmq.mongodb.net:27017,cluster0-shard-00-01-91fmq.mongodb.net:27017,cluster0-shard-00-02-91fmq.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin
');

$collection = $client->test->bf;
$result = $collection->find( [ 'name' => $name, 'brewery' => $brewery ] );

foreach ($result as $entry) {
    echo $entry['_id'], ': ', $entry['name'], "<br>"; //Print with ID
}
?>

1 个答案:

答案 0 :(得分:0)

这里有两个可能的问题。

首先请确保您的PHP驱动程序与MongoDB服务器版本兼容。有关详细信息,请参阅PHP driver compatibility table

您可以使用以下命令检查MongoDB PHP驱动程序版本:

php --ri mongodb | grep version

另一种可能性是您发送了错误/未编码的密码。如果密码包含特殊字符(即@:或%),则应在URI中对密码进行编码。有关详细信息,另请参阅MongoDB\Driver\Manager::__construct()MongoDB\Client::__construct()