共享主机上的PHP MongoDB驱动程序未连接到atlas
使用mongodb驱动程序1.5.2从sharedhosting连接到mongodb atlas免费层,并尝试编写一个简单文档,会出现以下错误。我做错了什么共享主机上的PHP MongoDB驱动程序未连接到atlas,php,mongodb,mongodb-query,mongodb-php,mongodb-atlas,Php,Mongodb,Mongodb Query,Mongodb Php,Mongodb Atlas,使用mongodb驱动程序1.5.2从sharedhosting连接到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&serv
$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);
致命错误:未捕获
MongoDB\Driver\Exception\ConnectionTimeoutException:没有合适的
找到服务器:serverselectiontimeoutms超时:[连接已关闭
在[test-shard-00-00-waf4c.mongodb.net:27017]中调用ismaster
/Applications/AMPPS/www/mongodb/liveserver.php:63
当我卸载$manager时,我得到:
对象(MongoDB\Driver\Manager)#1(2){[“uri”]=>string(64)
“管理员:admin@test-shard-00-00-rbgc.mongodb.net:27017/“[“集群”]=>
数组(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);
连接字符串错误。新驱动程序和旧驱动程序有两个版本,两个版本均由atlas提供: 3.6+版本应为:
mongodb+srv://admin:admin@test-shard-rbgc.mongodb.net:27017/db?retryWrites=true
它是mongodb+srv://
和一个带有小参数的碎片地址。它应该与mongodb-1.5配合使用。如果没有,请尝试旧版本:
3.4版本应为(一行):
它是mongodb://
,url中复制集的所有成员的列表,参数中复制集的名称等
另外,请确保您的服务器的IP地址在atlas中被列入白名单。连接字符串错误。新驱动程序和旧驱动程序有两个版本,两个版本均由atlas提供: 3.6+版本应为:
mongodb+srv://admin:admin@test-shard-rbgc.mongodb.net:27017/db?retryWrites=true
它是mongodb+srv://
和一个带有小参数的碎片地址。它应该与mongodb-1.5配合使用。如果没有,请尝试旧版本:
3.4版本应为(一行):
它是mongodb://
,url中复制集的所有成员的列表,参数中复制集的名称等
另外,确保您的服务器的IP地址在atlas中被列为白名单。您可以从其他任何地方连接到它吗
telnet test-shard-00-00-rbgc.mongodb.net 27017
说“提供了nodename或servname,或者不知道”@AlexBlex我可以从我的本地机器连接到它,它在mongodb或libcrypto中不使用OpenSSL,而是使用安全传输和通用加密。你没有使用ssl-它在url中是ssl=false
,是吗?尝试跟随并拆分连接字符串以匹配构造函数接口。您是否尝试使用所需的参数创建管理器?您所说的“some”是什么意思?只有3个,在问题中只使用1,将所有内容作为单个字符串。如果您尝试了其他内容,请使用您的尝试更新问题。您可以从其他任何位置连接到它吗telnet test-shard-00-00-rbgc.mongodb.net 27017
说“提供了nodename或servname,或者不知道”@AlexBlex我可以从我的本地机器连接到它,它在mongodb或libcrypto中不使用OpenSSL,而是使用安全传输和通用加密。你没有使用ssl-它在url中是ssl=false
,是吗?尝试跟随并拆分连接字符串以匹配构造函数接口。您是否尝试使用所需的参数创建管理器?您所说的“some”是什么意思?只有3个,在问题中只使用1,将所有内容作为单个字符串。如果你试过别的东西,请尝试更新问题。刚刚在Ubuntu Bionic上用php 7.2.10和mongodb 1.3.4进行测试,遗留连接可以正常工作。将mongodb驱动程序升级到1.5.3-它与新的v3.6连接url完美配合。如果您想检查其他设置,可以使用图片docker pull alexblex/so-52627401
。这很公平。尝试联系主机支持。请清理您的收藏2并更改密码。恐怕我在那里做了一些插入测试。我想是的,你可以把图像拉出来检查一下。这是出版它的目的。我肯定是在传统url中使用了ssl=true
。刚刚在Ubuntu Bionic上测试了php 7.2.10和mongodb 1.3.4,传统连接可以工作。将mongodb驱动程序升级到1.5.3-它与新的v3.6连接url完美配合。如果你想检查其他设置,这里有图像docker pull alexblex/so-52627401
。公平足够地尝试联系主机支持。请清理您的收藏2并更改密码。恐怕我在那里做了一些插入测试。我想是的,你可以把图像拉出来检查一下。这是出版它的目的。我肯定是在遗留url中使用了ssl=true
。