Настройка 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 (кратко)
- Проверка активной версии PHP и путь к php.ini
- Где править php.ini для PHP 8.4 в OpenServer 6
- Перезапуск и проверка через phpinfo() и CLI
- Настройка project.ini и привязка модуля к проекту
- Типичные ошибки и способы их исправления
- Чек-лист: быстрые шаги для восстановления работы MongoDB
- Источники
- Заключение
Как включить MongoDB в OpenServer 6 (кратко)
Почему строка снова закомментирована? Потому что OpenServer при старте может генерировать/подменять php.ini из шаблонов или модулей — и ваши правки в runtime-файле теряются. Первое, что нужно сделать: открыть меню Modules в OpenServer и включить модуль MongoDB (если модуль есть в списке). Это описано в практических гайдах по OpenServer 6 — включение модуля часто автоматически добавляет нужные библиотеки и настройки (см. пример инструкции по OpenServer: Web-Revenue).
Коротко: включили модуль → убедились, что правите правильный php.ini → перезапустили → проверили phpinfo().
Проверка активной версии PHP и путь к php.ini
- Создайте временный файл info.php в корне сайта с содержимым:
<?php
phpinfo();
- Откройте его в браузере через ваш локальный хост. В phpinfo() найдите строки:
- Loaded Configuration File — путь к загружаемому php.ini (именно этот файл надо править);
- extension_dir — папка, откуда PHP грузит расширения;
- Thread Safety, Architecture (x86/x64) — нужны для подбора правильного DLL.
- Если в 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
- После правки шаблона/php.ini полностью перезапустите OpenServer (Stop → Start).
- Снова откройте info.php и убедитесь, что в phpinfo():
- строка extension=php_mongodb.dll появилась в разделе Loaded Configuration File (или в списке дополнительных .ini);
- раздел mongodb или информация о драйвере видна (если расширение загрузилось).
- Проверка через CLI (пример, если OpenServer в C:\OpenServer):
- В командной строке выполните:
C:\OpenServer\modules\php\PHP-8.4\php.exe -m
и проверьте, есть ли в списке mongodb.
- Или сохраните файл check_mongo.php:
<?php var_dump(extension_loaded('mongodb')); ?>
и запустите:
C:\OpenServer\modules\php\PHP-8.4\php.exe check_mongo.php
- Если расширение не загружается — смотрите ошибки в логах 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
- Откройте info.php и запомните путь Loaded Configuration File и extension_dir.
- Включите модуль MongoDB в OpenServer → Modules (если есть).
- Внесите строку в шаблон php.ini для PHP‑8.4 (config\PHP-8.4\default\templates\php.ini) либо в runtime php.ini (если шаблон не используется):
- extension=php_mongodb.dll
- Проверьте, что php_mongodb.dll находится в extension_dir и соответствует сборке PHP (x64/x86, TS/NTS).
- Если DLL отсутствует — скачайте совместимую сборку с PECL (https://pecl.php.net/package/mongodb) и положите в extension_dir.
- Убедитесь, что файлы libmongoc-.dll / libbson-.dll доступны (рядом с php.exe или в PATH).
- Полностью перезапустите OpenServer.
- Проверьте phpinfo() и выполните C:\OpenServer\modules\php\PHP-8.4\php.exe -m.
- Если не загружается — смотрите лог PHP и ищите сообщения про загрузку расширений.
- (Опционально) Зафиксируйте настройки для проекта в .osp/project.ini: php_engine = PHP-8.4, mongo_engine = MongoDB-<версия>.
Источники
- Практическое руководство по OpenServer 6: https://web-revenue.ru/sajtostroenie/open-server-panel-6-bystryy-start-dlya-novichkov
- Быстрый старт OpenServer 6 (о шаблонах php.ini): https://rwsite.ru/open-server-6-bystryj-start/
- Страница расширения MongoDB (PECL): https://pecl.php.net/package/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.