Веб

Настройка MongoDB в OpenServer 6 для PHP 8.4: пошагово

Как включить MongoDB в OpenServer 6 с PHP 8.4: пошагово — включение модуля, корректный php.ini для PHP 8.4, перезапуск OpenServer и проверка через phpinfo().

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

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

extension = mongodb

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

Чаще всего причина в том, что OpenServer 6 перезаписывает / использует другой php.ini (шаблон или конфигурация активной версии PHP), поэтому ваша правка extension = mongodb теряется при перезапуске; ещё возможны несовместимый DLL-драйвер или отсутствующие зависимые DLL. Решение: включите модуль MongoDB через меню Modules, отредактируйте именно php.ini той сборки PHP‑8.4 или шаблон для PHP‑8.4, убедитесь, что php_mongodb.dll лежит в extension_dir и соответствует сборке (x64/x86, TS/NTS), перезапустите OpenServer и проверьте phpinfo() / php -m. Если хотите — пошаговый план и чек-лист ниже.


Содержание


Как включить MongoDB в OpenServer 6 (кратко)

Почему строка снова закомментирована? Потому что OpenServer при старте может генерировать/подменять php.ini из шаблонов или модулей — и ваши правки в runtime-файле теряются. Первое, что нужно сделать: открыть меню Modules в OpenServer и включить модуль MongoDB (если модуль есть в списке). Это описано в практических гайдах по OpenServer 6 — включение модуля часто автоматически добавляет нужные библиотеки и настройки (см. пример инструкции по OpenServer: Web-Revenue).

Коротко: включили модуль → убедились, что правите правильный php.ini → перезапустили → проверили phpinfo().


Проверка активной версии PHP и путь к php.ini

  1. Создайте временный файл info.php в корне сайта с содержимым:
php
<?php
phpinfo();
  1. Откройте его в браузере через ваш локальный хост. В phpinfo() найдите строки:
  • Loaded Configuration File — путь к загружаемому php.ini (именно этот файл надо править);
  • extension_dir — папка, откуда PHP грузит расширения;
  • Thread Safety, Architecture (x86/x64) — нужны для подбора правильного DLL.
  1. Если в phpinfo() видно, что загружается php.ini из папки PHP-8.4 — редактируйте именно его. Если путь указывает на какой-то “template” или на конфигурацию, создаваемую OpenServer, значит правка runtime-файла не сохранится при рестарте.

Совет: всегда ориентируйтесь на путь из “Loaded Configuration File” — это единственный гарантированный источник правды.


Где править php.ini для PHP 8.4 в OpenServer 6

OpenServer использует шаблоны конфигураций для каждой версии PHP. Частые места (пример структуры) — поправьте в соответствии с вашим каталогом установки OpenServer:

  • runtime php.ini (тот, что показывает phpinfo()): %OPEN_SERVER%\modules\php\PHP-8.4\php.ini
  • шаблон, который перезаписывается при старте: %OPEN_SERVER%\config\PHP-8.4\default\templates\php.ini

Практический совет: если вы видите, что после перезапуска комментарии возвращаются — вы правите runtime-файл, а OpenServer при старте берёт шаблон. В этом случае внесите нужную строку в шаблон (или создайте собственный шаблон dev/production), чтобы изменение было постоянным. Подробности о шаблонах и модулях — в одном из практических гайдов по OpenServer 6: rwsite.ru.

Как правильно прописать расширение на Windows:

  • Лучше указывать точное имя DLL, чтобы избежать неоднозначности:
extension=php_mongodb.dll
  • Проверьте, что файл php_mongodb.dll действительно лежит в extension_dir (путь из phpinfo()).

Перезапуск OpenServer и проверка через phpinfo() и CLI

  1. После правки шаблона/php.ini полностью перезапустите OpenServer (Stop → Start).
  2. Снова откройте info.php и убедитесь, что в phpinfo():
  • строка extension=php_mongodb.dll появилась в разделе Loaded Configuration File (или в списке дополнительных .ini);
  • раздел mongodb или информация о драйвере видна (если расширение загрузилось).
  1. Проверка через CLI (пример, если OpenServer в C:\OpenServer):
  • В командной строке выполните:
C:\OpenServer\modules\php\PHP-8.4\php.exe -m

и проверьте, есть ли в списке mongodb.

  • Или сохраните файл check_mongo.php:
php
<?php var_dump(extension_loaded('mongodb')); ?>

и запустите:

C:\OpenServer\modules\php\PHP-8.4\php.exe check_mongo.php
  1. Если расширение не загружается — смотрите ошибки в логах PHP (через меню OpenServer → Логи или в папке userdata/logs) — ошибка загрузки DLL обычно даёт подсказку (“Unable to load dynamic library…”).

Настройка project.ini и привязка модуля к проекту

Если вы используете проектные настройки OpenServer (.osp/project.ini или аналог), можно зафиксировать версию PHP и модуль для конкретного домена. Пример .osp/project.ini:

[example.local]
php_engine = PHP-8.4
mongo_engine = MongoDB-<версия>

Благодаря этому при запуске OpenServer для данного проекта будет применяться нужная сборка PHP и нужный модуль MongoDB. Такая привязка предотвращает ситуацию, когда глобальная конфигурация отличается от проектной и ваши правки не применяются.


Типичные ошибки и способы их исправления

  • Редактировали не тот php.ini → решение: правьте файл из “Loaded Configuration File” или шаблон в config\PHP-8.4\default\templates\php.ini.
  • OpenServer перезаписывает php.ini из шаблона → правьте шаблон или создайте собственный шаблон.
  • Несовместимый php_mongodb.dll → скачайте драйвер, соответствующий PHP 8.4, архитектуре (x64/x86) и Thread Safety (TS/NTS). Сборки доступны в репозитории PECL: pecl.php.net/package/mongodb.
  • Отсутствуют зависимые DLL (libmongoc-1.0.dll, libbson-1.0.dll) → проверьте, что они лежат в PATH или рядом с php.exe/в extension_dir.
  • Неправильное extension_dir → проверьте путь в phpinfo() и переместите DLL в указанную папку.
  • Права доступа (редко на Windows) → убедитесь, что файлы доступны для чтения.
  • Конфликт версий: модуль OpenServer (если установлен как модуль) конфликтует с ручной установкой → либо используйте модуль OpenServer, либо настраивайте собственные DLL и php.ini, но не оба варианта сразу.

Если при загрузке расширения вы видите строку в логах с текстом про “cannot find module” или “The specified module could not be found” — это обычно про несовпадение DLL/зависимостей; ищите названия отсутствующих DLL в сообщении.


Чек-лист: быстрые шаги для восстановления работы MongoDB

  1. Откройте info.php и запомните путь Loaded Configuration File и extension_dir.
  2. Включите модуль MongoDB в OpenServer → Modules (если есть).
  3. Внесите строку в шаблон php.ini для PHP‑8.4 (config\PHP-8.4\default\templates\php.ini) либо в runtime php.ini (если шаблон не используется):
  • extension=php_mongodb.dll
  1. Проверьте, что php_mongodb.dll находится в extension_dir и соответствует сборке PHP (x64/x86, TS/NTS).
  2. Если DLL отсутствует — скачайте совместимую сборку с PECL (https://pecl.php.net/package/mongodb) и положите в extension_dir.
  3. Убедитесь, что файлы libmongoc-.dll / libbson-.dll доступны (рядом с php.exe или в PATH).
  4. Полностью перезапустите OpenServer.
  5. Проверьте phpinfo() и выполните C:\OpenServer\modules\php\PHP-8.4\php.exe -m.
  6. Если не загружается — смотрите лог PHP и ищите сообщения про загрузку расширений.
  7. (Опционально) Зафиксируйте настройки для проекта в .osp/project.ini: php_engine = PHP-8.4, mongo_engine = MongoDB-<версия>.

Источники


Заключение

Если коротко: проблема почти всегда в том, что вы правите не тот php.ini или OpenServer перезаписывает файл из шаблонов — правьте шаблон для PHP‑8.4 или подключайте модуль через Modules, убедитесь в совпадении php_mongodb.dll с вашей сборкой PHP и в доступности зависимых DLL, затем перезапустите и проверьте phpinfo()/php -m. Если после всех шагов расширение всё ещё не видно — пришлите вывод phpinfo() (разделы Loaded Configuration File, extension_dir, Thread Safety, список модулей) и список файлов в extension_dir — помогу проверить совместимость и указать точную строку для php.ini.

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