PHP Класс не найден, хотя модуль установлен - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь использовать модуль mongodb PHP. Я установил его с помощью pecl и записал в мой php .ini. При вызове и ответе get_loaded_extensions() правильно отображается добавочный номер mongodb. Однако мой код, который следует официальному руководству , выдает ошибку class MongoDB\Client not found. Как я могу это исправить? Нужно ли сначала как-то включать модуль?

Мой код:

<?php
var_dump(get_loaded_extensions());
$client = new MongoDB\Client(
    'mongodb+srv://<username>:<password>@<cluster-address>/test?retryWrites=true&w=majority'
);

Я размещаю сервер nginx на моем Raspberry Pi с установленным Rasbian Lite, если это имеет значение.

1 Ответ

1 голос
/ 30 января 2020

MongoDB\Client - это библиотека php, которая работает с php драйвером mongodb, который является расширением mongodb, которое вы видите с помощью get_loaded_extensions(). Чтобы использовать класс MongoDB\Client, вам необходимо скачать библиотеку с именем mongodb / mongodb .

. Для этого сначала в вашем проекте root создайте папку с любым именем, которое вы предпочитаете, для например, mongodb_test в нашем случае; Теперь создайте файл с именем composer. json file и поместите в него следующий код:

{
    "require": {
        "mongodb/mongodb": "^1.2"
    }
}

Затем выполните следующую команду в инструменте командной строки:

php composer.phar install 

или следующая команда, если composer установлена ​​глобально

composer install

Далее, в той же папке / папке создайте новый файл с любым именем и поместите следующий код для его проверки например, в localhost.

<?php

// Notice here. This is a must that you're missing
require 'vendor/autoload.php';

// Create client object
$client = new MongoDB\Client("mongodb://localhost:27017");

// Gets collection
$collection = $client->demo->beers;

// Inserts data
$result = $collection->insertOne(['name' => 'Hinterland', 'brewery' => 'BrewDog']);

echo 'Inserted with Object ID: ' . $result->getInsertedId() . '<br>';

// Fetches data
$result = $collection->find(['name' => 'Hinterland']);

// Iterates over data
foreach ($result as $entry) {
    echo $entry['_id'], ': ', $entry['name'], "\n";
}

Надеюсь, это поможет вам понять.

...