PHP MongoDB 共享主机上的驱动程序未连接到 atlas

PHP MongoDB Driver on shared hosting doesnt connect to atlas

使用 mongodb 驱动程序 1.5.2 从共享主机连接到 mongodb atlas 免费层并尝试编写一个简单的文档会出现以下错误。我做错了什么?

$manager = new MongoDB\Driver\Manager("mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/db?ssl=false&replicaSet=test-shard-0&authSource=admin&serverSelectionTryOnce=false");

var_dump($manager);

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->insert(['x' => 1]);
$manager->executeBulkWrite('db.collection', $bulk);

Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found: serverselectiontimeoutms timed out: [connection closed calling ismaster on 'test-shard-00-00-waf4c.mongodb.net:27017'] in /Applications/AMPPS/www/mongodb/liveserver.php:63

当我 var_dump $manager 我得到:

object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(64) "admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/" ["cluster"]=> array(0) { } }

我也尝试了以下方法,但错误始终相同:

$manager = new MongoDB\Driver\Manager('mongodb://admin:admin@pirat-shard-00-00-vegbq.gcp.mongodb.net:27017/db?ssl=falseweak_cert_validation=false');

$bulk = new MongoDB\Driver\BulkWrite;


$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection2', $bulk);

连接字符串错误。新旧驱动有2个版本,两个版本都由atlas提供:

3.6+版本应该是:

mongodb+srv://admin:admin@test-shard-rbgc.mongodb.net:27017/db?retryWrites=true

它是 mongodb+srv:// 和带有少量参数的分片的单个地址。它应该适用于 mongodb-1.5。如果没有,请尝试旧版:

3.4-版本应该是(一行):

mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net:27017,
   test-shard-00-01-rbgc.mongodb.net:27017,
   test-shard-00-02-rbgc.mongodb.net:27017
   /db?ssl=true&replicaSet=Test-shard-0&authSource=admin&retryWrites=true

mongodb://,url中的副本集所有成员列表,参数中的副本集名称等

此外,请确保您的服务器的 IP 地址已在图集中列入白名单。