Другое

Настройка MongoDB в OpenServer 6 с PHP 8.4

Пошаговое руководство по настройке MongoDB в OpenServer 6 с PHP 8.4. Решаем проблему с исчезающим расширением после перезапуска. Полная инструкция с проверкой совместимости версий.

Как настроить MongoDB в OpenServer 6 с PHP 8.4?

Добрый день! Я запускаю OpenServer 6 и в своем проекте хочу использовать MongoDB. Я установил PHP версии 8.4 и отредактировал php.ini, где раскомментировал строку:

extension = mongodb

а также подключил все необходимые зависимости. После перезапуска OpenServer я обнаружил, что расширение снова закомментировано, а в phpinfo() модуль MongoDB отсутствует. В чем может быть проблема? В документации указано, что достаточно просто раскомментировать расширение, и файлы модуля действительно присутствуют в системе.

Проблема с настройкой MongoDB в OpenServer 6 с PHP 8.4 обычно связана с неправильным расположением файла php.ini или несовместимостью версий расширения. Раскомментирование строки в php.ini может не работать, если вы редактируете не тот файл конфигурации.

Содержание

Основные причины проблемы

В OpenServer 6 система конфигурации работает иначе, чем в стандартных веб-серверах. Основные проблемы могут быть следующими:

  1. Неправильный файл php.ini - нужно редактировать шаблон в папке OpenServer\userdata\config, а не в системной папке PHP
  2. Несовместимость версий - для PHP 8.4 требуется MongoDB расширение версии 1.20 или выше
  3. Отсутствие необходимых зависимостей - MongoDB требует libbson, libmongoc и libmongocrypt
  4. Некорректная перезагрузка модулей - изменения применяются только после перезапуска PHP модуля

Как указано в документации OpenServer, шаблоны конфигурации индивидуальны для каждого модуля PHP. Если вы сконфигурируете шаблон для одной версии PHP, а затем выберите другую, настройки не сохранятся.


Пошаговая настройка MongoDB

Шаг 1: Правильное редактирование php.ini

  1. Откройте OpenServer в системном трее
  2. Щелкните правой кнопкой мыши на иконке OpenServer
  3. выберите “Настройка” → “Модули PHP”
  4. Найдите вашу версию PHP 8.4 и нажмите “Редактировать конфигурацию”
  5. Откроется файл OpenServer\userdata\config\PHP_8.4_php.ini

Как объясняют на Habr Q&A, нужно именно менять php.ini в папке OpenServer\userdata\config и открывать ini файл через панель OpenServer.

Шаг 2: Добавление расширения MongoDB

В найденном файле php.ini добавьте или раскомментируйте строку:

extension = mongodb

Шаг 3: Перезапуск PHP модуля

Внесите изменения в php.ini, затем:

  1. Щелкните правой кнопкой мыши на иконке OpenServer
  2. выберите “Перезапустить PHP модуль”
  3. Дождитесь завершения перезапуска

Как указано в обсуждении GitHub, после внесения изменений в php.ini обязательно нужно перезапустить модуль PHP, чтобы применить новые настройки.


Проверка совместимости версий

MongoDB имеет строгие требования к версиям PHP драйвера:

  • MongoDB 6.x: Требуется MongoDB PHP Driver 1.14 или выше
  • MongoDB 7.x: Требуется MongoDB PHP Driver 1.16 или выше
  • MongoDB 8.x: Требуется MongoDB PHP Driver 1.20 или выше

Для PHP 8.4 используйте только последние версии расширения. Как отмечено в статье AccuWeb, несоответствие версий является частой причиной проблем.


Альтернативные методы установки

Если стандартный метод не работает, попробуйте установить расширение через PECL:

Метод 1: Установка через PECL

  1. Откройте командную строку (cmd) от имени администратора
  2. Перейдите в папку OpenServer:
    cd "C:\OpenServer\modules\php\PHP_8.4"
    
  3. Выполните команду установки:
    pecl install mongodb-1.20.1
    
  4. После установки добавьте в php.ini:
    extension=mongodb
    

Как показано в примере для Docker Alpine, установка через PECL с указанием конкретной версии часто решает проблемы совместимости.

Метод 2: Использование системных библиотек

Если у вас уже установлены системные библиотеки MongoDB, используйте флаг:

pecl install mongodb --with-mongodb-system-libs=yes

Как указано в официальной документации PHP, по умолчанию расширение использует встроенные версии библиотек, но можно указать использование системных.


Дополнительные рекомендации

Проверка зависимостей

Убедитесь, что установлены необходимые системные библиотеки:

  • libbson
  • libmongoc
  • libmongocrypt

Проверка через phpinfo()

После настройки проверьте:

  1. Создайте файл info.php со содержанием:
    php
    <?php phpinfo(); ?>
    
  2. Откройте в браузере
  3. Найдите раздел “mongodb” или “MongoDB”

Если расширение не отображается, проверьте логи ошибок PHP.

Если проблема остается

  1. Проверьте права доступа к файлу расширения
  2. Убедитесь, что путь к расширению правильный:
    extension_dir = "C:\OpenServer\modules\php\PHP_8.4\ext"
    
  3. Попробуйте временно игнорировать требования расширения:
    bash
    composer install --ignore-platform-req=ext-mongodb
    

Как упоминается в issue на GitHub, можно использовать --ignore-platform-req=ext-mongodb для временного обхода проблем с расширением.

Источники

  1. Как сохранить настройки php.ini в OpenServer? — Хабр Q&A
  2. Open Server Panel 6.0.0 · OSPanel/OpenServerPanel · Discussion #8
  3. Документация Open Server Panel
  4. Installing the MongoDB PHP Extension with PECL - Manual
  5. Common Issues Faced by Developers When Using MongoDB with PHP - AccuWeb
  6. Install mongodb extension on Docker Alpine PHP 8.0 – EVILBOX
  7. Missing PHP MongoDb drivers for non-default PHP version · Issue #1884 · laravel/homestead

Заключение

Настройка MongoDB в OpenServer 6 с PHP 8.4 требует внимания к деталям конфигурации. Ключевые моменты:

  1. Правильный файл конфигурации - всегда редактируйте php.ini через контекстное меню OpenServer в папке userdata/config
  2. Совместимость версий - используйте MongoDB расширение версии 1.20+ для PHP 8.4
  3. Перезапуск модулей - после изменений обязательно перезапускайте PHP модуль
  4. PECL установка - если стандартный метод не работает, попробуйте ручную установку через PECL

Если вы следовали всем шагам и проблема остается, проверьте целостность файлов расширения и обратитесь к официальной документации MongoDB для PHP.

Авторы
Проверено модерацией
Модерация