Dimd13
@Dimd13

Symfony2.8 Сессии в MongoDB. Как настроить верно?

Привет.

Для проекта на Symfony (v2.8.9) пытаюсь настроить хранение сессий в MongoDB. На сервере установлен PHP7.0.8. Через pecl установлен драйвер mongodb и добавлен extension=mongodb.so в php.ini
sudo pecl install mongodb
Настройку Symfony делаю как описано в доке "How to Use MongoDbSessionHandler to Store Sessions..." подставив свои данные для коннекта к базе
# app/config/config.yml
framework:
    session:
        # ...
        handler_id:  session.handler.mongo
        cookie_lifetime: 2592000 # optional, it is set to 30 days here
        gc_maxlifetime: 2592000 # optional, it is set to 30 days here

services:
    # ...
    mongo_client:
        class: MongoClient
        # if using a username and password
        arguments: ['mongodb://%mongodb_username%:%mongodb_password%@%mongodb_host%:27017']
        
    session.handler.mongo:
        class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler
        arguments: ['@mongo_client', '%mongo.session.options%']

# app/config/parameters.yml
parameters:
    # ...
    mongo.session.options:
        database: session_db # your MongoDB database name
        collection: session  # your MongoDB collection name
    mongodb_host: 1.2.3.4 # your MongoDB server's IP
    mongodb_username: my_username
    mongodb_password: my_password

В ответ на запрос к серверу получаю ошибку
ClassNotFoundException in appDevDebugProjectContainer.php line 2232:
Attempted to load class "MongoClient" from the global namespace.
Did you forget a "use" statement?

Пробовал вместо класса MongoClient поставить MongoDB\Driver\Manager, выпадает с ошибкой
ClassNotFoundException in appDevDebugProjectContainer.php line 2232:
Attempted to load class "Manager" from namespace "MongoDB\Driver".
Did you forget a "use" statement for another namespace?

Подскажите в чем может быть причина ошибки и как ее побороть?
  • Вопрос задан
  • 1072 просмотра
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Вероятно, информация в доке относится к старому драйверу. Добавте в зависимости:

The Mongo PHP Adapter is a userland library designed to act as an adapter between applications relying on ext-mongo and the new driver (ext-mongodb).

It provides the API of ext-mongo built on top of mongo-php-library, thus being compatible with PHP 7.

Mongo PHP Adapter
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы