mongoDB php不';找不到数据库,但已成功连接到服务器

mongoDB php不';找不到数据库,但已成功连接到服务器,php,mongodb,php-mongodb,Php,Mongodb,Php Mongodb,当我使用PHP连接到mongoDB数据库时,该变量有时包含一个空数组,但ping时,该数组包含数据。当我刚刚重新启动apache2 Web服务器时,会出现空阵列。我想还有其他的原因,但我找不到一个方法来解决这个问题 这不是我唯一的问题。当我选择一个数据库时,变量包含NULL,因此我不能选择一个集合。也很难找到最新的文档,因为它们已经过时了。 现在请看我所有的代码: $mongo = new MongoDB\Driver\Manager("mongodb://root:pwd@local

当我使用PHP连接到mongoDB数据库时,该变量有时包含一个空数组,但ping时,该数组包含数据。当我刚刚重新启动apache2 Web服务器时,会出现空阵列。我想还有其他的原因,但我找不到一个方法来解决这个问题

这不是我唯一的问题。当我选择一个数据库时,变量包含NULL,因此我不能选择一个集合。也很难找到最新的文档,因为它们已经过时了。 现在请看我所有的代码:

$mongo = new MongoDB\Driver\Manager("mongodb://root:pwd@localhost:27017");
var_dump($mongo);
有时返回:

object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(47) "mongodb://root:pwd@localhost:27017" ["cluster"]=> array(0) { } }
在打印数据库之前向数据库发送ping:

$mongo = new MongoDB\Driver\Manager("mongodb://root:pwd@localhost:27017");
$command = new MongoDB\Driver\Command(['ping' => 1]);
$mongo->executeCommand('db', $command);
var_dump($mongo);
$mongo = new MongoDB\Driver\Manager("mongodb://root:pwd@localhost:27017");
//Ping the database
$command = new MongoDB\Driver\Command(['ping' => 1]);
$mongo->executeCommand('db', $command);
//select the hltv database
$db = $mongo->hltv;
var_dump($db);
返回:

 object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(47) "mongodb://root:pwd@localhost:27017" ["cluster"]=> array(1) { [0]=> array(10) { ["host"]=> string(9) "localhost" ["port"]=> int(27017) ["type"]=> int(1) ["is_primary"]=> bool(false) ["is_secondary"]=> bool(false) ["is_arbiter"]=> bool(false) ["is_hidden"]=> bool(false) ["is_passive"]=> bool(false) ["last_is_master"]=> array(10) { ["ismaster"]=> bool(true) ["maxBsonObjectSize"]=> int(16777216) ["maxMessageSizeBytes"]=> int(48000000) ["maxWriteBatchSize"]=> int(100000) ["localTime"]=> object(MongoDB\BSON\UTCDateTime)#2 (1) { ["milliseconds"]=> string(13) "1618843900377" } ["logicalSessionTimeoutMinutes"]=> int(30) ["minWireVersion"]=> int(0) ["maxWireVersion"]=> int(6) ["readOnly"]=> bool(false) ["ok"]=> float(1) } ["round_trip_time"]=> int(0) } } }
NULL
现在找不到我的数据库:

$mongo = new MongoDB\Driver\Manager("mongodb://root:pwd@localhost:27017");
$command = new MongoDB\Driver\Command(['ping' => 1]);
$mongo->executeCommand('db', $command);
var_dump($mongo);
$mongo = new MongoDB\Driver\Manager("mongodb://root:pwd@localhost:27017");
//Ping the database
$command = new MongoDB\Driver\Command(['ping' => 1]);
$mongo->executeCommand('db', $command);
//select the hltv database
$db = $mongo->hltv;
var_dump($db);
返回:

 object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(47) "mongodb://root:pwd@localhost:27017" ["cluster"]=> array(1) { [0]=> array(10) { ["host"]=> string(9) "localhost" ["port"]=> int(27017) ["type"]=> int(1) ["is_primary"]=> bool(false) ["is_secondary"]=> bool(false) ["is_arbiter"]=> bool(false) ["is_hidden"]=> bool(false) ["is_passive"]=> bool(false) ["last_is_master"]=> array(10) { ["ismaster"]=> bool(true) ["maxBsonObjectSize"]=> int(16777216) ["maxMessageSizeBytes"]=> int(48000000) ["maxWriteBatchSize"]=> int(100000) ["localTime"]=> object(MongoDB\BSON\UTCDateTime)#2 (1) { ["milliseconds"]=> string(13) "1618843900377" } ["logicalSessionTimeoutMinutes"]=> int(30) ["minWireVersion"]=> int(0) ["maxWireVersion"]=> int(6) ["readOnly"]=> bool(false) ["ok"]=> float(1) } ["round_trip_time"]=> int(0) } } }
NULL
错误日志显示:

PHP Warning:  Undefined property: MongoDB\\Driver\\Manager::$hltv in /var/www/hltv/index.php on line 6
尝试列出所有数据库时:

$mongo = new MongoDB\Driver\Manager("mongodb://root:pwd@localhost:27017");
//Ping the database
$command = new MongoDB\Driver\Command(['ping' => 1]);
$mongo->executeCommand('db', $command);
//list databases
var_dump($mongo->listDatabases());
返回空白屏幕并显示以下错误:

PHP Fatal error:  Uncaught Error: Call to undefined method MongoDB\\Driver\\Manager::listDatabases() in /var/www/hltv/index.php:6\nStack trace:\n#0 {main}\n  thrown in /var/www/hltv/index.php on line 6
此时,选择集合是没有意义的。 我确保root用户具有读写访问权限,并且使用MongoDb Compass访问数据库工作正常,显示所有数据库/集合,并允许我读取/写入数据

我的设置:

操作系统:Ubuntu 18.04

MongoDB版本:3.6.3

PHP版本:8.0.3

MongoDB PHP驱动程序版本:1.9.1


Apache2是用来运行PHP代码的。

现在我发现有一个驱动程序和一个库,所以在安装了库之后,现在一切似乎都正常了。我不知道应用程序被分为两部分。

也许可以尝试列出数据库,看看是否有显示?:()此外,我认为“ping”差异可能不是问题,因为可能只是延迟初始化了连接。列表数据库返回未定义的方法我更新了问题以包含更多详细信息。