PHP-соединение с MongoDB не работает и отвечает «пытается получить свойство, не имеющее значения» - PullRequest
0 голосов
/ 21 июня 2019

Я пытался подключиться к своему атласному кластеру MongoDB, используя PHP версии 7 на экземпляре AWS EC2 linux, работающем под управлением apache2, для вставки и обновления значений в этой базе данных / коллекции.

Я установил драйвер MongoDB версии 4 и PHP-библиотеку MongoDB 1.5.5, установил для белого списка IP-адресов значение 0.0.0.0 в кластере MongoDB, а также в экземпляре AWS. Я также читал почти все посты по stackoverflow, которые касаются проблем других людей, связанных с подключением MongoDB к PHP в экземпляре ec2, и испробовал множество рекомендаций, которые не увенчались успехом. Угадаю, это связано с тем, где что-то может быть установлено, но я не знаю, почему не могу подключиться: /

Я использовал Composer для автозагрузки библиотек, и файл MongoDB.so находится в правильном месте, и я могу запустить службу в командной строке.

Мой корень документа установлен в / var / www / IOT / public, где находится мой код, и я пытался сохранить все файлы конфигурации в / usr / lib64 или / etc / bin

Мой кластер - IOT, база данных - JT, а коллекция - IOT

require_once '/var/www/html/vendor/autoload.php';

$connection = new MongoDB\Driver\Manager('mongodb+srv://${user}:${pwd}@iot-sjtus.mongodb.net/JT?retryWrites=true&w=majority');


   $db = $connection->JT;

   $collection = $db->IOT;


   $document = array(
      "title" => "MongoDB",
      "description" => "database",
      "likes" => 100,
      "url" => "http://www.tutorialspoint.com/mongodb/",
      "by" => "tutorials point"
   );

   $collection->insert($document);
   echo "Document inserted successfully";


I expected my collection to be updated with the $document but I get the errors

    Notice: Undefined property: MongoDB\Driver\Manager::$JT in /var/www/IOT/public/test.php on line 26

    Notice: Trying to get property of non-object in /var/www/IOT/public/test.php on line 28

    Fatal error: Uncaught Error: Call to a member function insert() on null in /var/www/IOT/public/test.php:39 Stack trace: #0 {main} thrown in /var/www/IOT/public/test.php on line 39

PHPinfo (); выход

PHPinfo (); вывод php версии

PHPinfo (); Выход версии mongodb

1 Ответ

0 голосов
/ 22 июня 2019

Кажется, что ваши подключения неверны, я имею в виду, что вы не связаны с MongoDB

Сначала попробуйте перехватить исключение, чтобы узнать причину:

try {
   $connection = new MongoDB\Driver\Manager('mongodb+srv://${user}:${pwd}@iot-sjtus.mongodb.net/JT?retryWrites=true&w=majority');
   $db = $connection->JT;
   $collection = $db->IOT;
   var_dump($collection);
} catch(\Exception $e) {
  echo $e->getMessage(), "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...