我一直在尝试使用MongoDb,当我运行脚本进行连接时,它不能,因为密码使用@
符号。
连接到MongoDb
mongodb://username:password@localhost
但由于我连接MongoDb的密码使用@
符号,因此@
符号无法连接。
例如;
new MongoClient("mongodb://mongo:p@assword@localhost);
将抛出以下错误;
PHP Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: assword!@localhost:27017: Couldn't get host info for assword!@localhost'
正如您所看到的,它认为密码中的第一个@
是密码和主机的分隔符。
有没有办法连接,并在使用MongoClient时允许密码中的@
符号?
答案 0 :(得分:6)
http://uk3.php.net/manual/en/mongoclient.construct.php您可以将用户名和密码作为选项数组传递
new MongoClient("mongodb://localhost:27017", array("username" => "joe", "password" => "test"));
答案 1 :(得分:0)
您可以尝试使用此代码。只需按动态值传递输入。
try {
$m = new MongoClient("mongodb://HOST:" . MNG_PORT, array(
"username" => MNG_USER,
"password" => MNG_PWD
)); // connect local Mongo
$db = $m->selectDB("DBNAME"); // select DB
$collection = $db->collections; // connect to collection
} catch ( MongoConnectionException $e ) {
echo 'Couldn\'t connect to mongodb, is the "mongo" process running?';
exit();
}