MongoDB PHP未捕获MongoDB \ Driver \ Exception \ ConnectionTimeoutException:找不到合适的服务器

时间:2016-12-09 09:41:19

标签: php mongodb

我遇到了这个奇怪的问题。

<?php
require_once __DIR__ . "/vendor/autoload.php";

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// connect to mongodb
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$command = new MongoDB\Driver\Command(array("ping" => 1));
$result = $manager->executeCommand("test", $command);

var_dump($result, $result->toArray());
?>

错误:

Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling ismaster on 'localhost:27017'] in /var/www/html/mongo.php:11 Stack trace: #0 /var/www/html/mongo.php(11): MongoDB\Driver\Manager->executeCommand('test', Object(MongoDB\Driver\Command)) #1 {main} thrown in /var/www/html/mongo.php on line 11

为什么这很奇怪?好吧,我已经尝试在互联网上搜索这个问题,人们总是说同样的事情:

  1. MongoDB服务器处于脱机状态
  2. MongoDB服务器数据已损坏
  3. 嗯...

    它不是脱机的,我的Java应用程序(和“mongo”)可以很好地连接到MongoDB服务器并且可以与数据库交互而不会抛出ConnectionTimeoutException。

    try {
        mongoClient = new MongoClient( "localhost" );
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    

    它没有被破坏,因为如果它被破坏了,我将无法通过Java连接它(对吗?)

    我已经尝试连接到127.0.0.1和localhost,同样的问题。

    我已经尝试重启httpd和mongod,同样的问题。

    我已经尝试将MongoDB服务器绑定到0.0.0.0而不是127.0.0.1,同样的问题。

    是的,安装了MongoDB驱动程序,它们在PHP Info中处于活动状态。

    MongoDB PHP版本:1.2.1

    MongoDB shell版本:3.2.10(现在更新为3.4.0)

    PHP版本:7.0.13

2 个答案:

答案 0 :(得分:3)

好的,我想我应该回来说明我是如何解决这个问题的(感谢@jmikola!)

https://github.com/mongodb/mongo-php-driver/issues/484

您需要使用“setsebool -P httpd_can_network_connect on”来解决问题。

答案 1 :(得分:0)

我遇到了这个问题:

Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found (serverSelectionTryOnce set)

我搜索了很多,但是没有任何解决方法。 使用macOs catalina,PHP 7.2

打开终端并运行命令后

mongod --dbpath Users/username/data/db

-dbpath是您的/ data / db路径

我的代码正常工作。.