Включение и использование MongoDB в ServBay (PHP-расширение и сервис базы данных)
ServBay — это мощная локальная среда для веб-разработки, созданная специально для разработчиков. Она интегрирует различные веб-серверы, языки программирования и базы данных, а также содержит в комплекте множество часто используемых расширений и инструментов. Для PHP-разработчиков, которым требуется работа с MongoDB, ServBay предоставляет удобные способы включения расширения MongoDB для PHP и запуска сервиса базы данных MongoDB.
В этой статье рассмотрено, как включить расширение MongoDB для PHP в ServBay, запустить сервис базы данных MongoDB, а также пример соединения и взаимодействия с MongoDB в PHP-проекте.
Обзор: ServBay и MongoDB
MongoDB — это высокопроизводительная, открытая NoSQL база данных, ориентированная на документы. Благодаря гибкой схеме данных и высокой масштабируемости, MongoDB широко используется в современных веб-приложениях.
ServBay включает MongoDB в свой набор встроенного ПО, позволяя разработчикам легко развернуть и управлять экземпляром MongoDB в локальной среде. ServBay также поставляет предварительно собранные расширения MongoDB (mongodb.so
) для разных версий PHP, чтобы ваши PHP-приложения могли взаимодействовать с MongoDB.
Для использования MongoDB в PHP-проекте необходимо выполнить два ключевых шага:
- Включить расширение MongoDB для PHP — это позволяет PHP-коду работать с функциями MongoDB.
- Запустить сервис базы данных MongoDB — этот экземпляр и будет хранить и обрабатывать данные.
Графический интерфейс пользователя (GUI) ServBay максимально упрощает оба этих этапа.
Версии расширения PHP MongoDB
ServBay предоставляет соответствующие версии расширения MongoDB для всех поддерживаемых версий PHP. Конкретные версии расширения могут меняться с обновлением ServBay, но обычно предоставляются проверенные стабильные релизы, совместимые с выбранной версией PHP. Ниже представлены распространенные соответствия версий (уточняйте в вашем релизе ServBay):
- PHP 5.6, 7.0: MongoDB 1.7.5
- PHP 7.1, 7.2, 7.3, 7.4: MongoDB 1.11.1
- PHP 8.0, 8.1, 8.2, 8.3: MongoDB 1.15.0
- PHP 8.4: MongoDB 1.19.1
Обратите внимание: расширение PHP (mongodb.so
) обеспечивает только возможность соединения PHP с MongoDB. Для реального взаимодействия в коде требуется установка официального MongoDB PHP Driver, который обычно инсталлируется через Composer.
Включение расширения PHP MongoDB
По умолчанию, ради минимизации среды, некоторые расширения PHP могут быть выключены. Рекомендованный способ включения расширения MongoDB — через графический интерфейс ServBay.
Включение через GUI ServBay
Самый простой и быстрый способ:
- Откройте приложение ServBay.
- В левой навигационной панели выберите Языки (Languages), далее PHP.
- Выберите нужную версию PHP, для которой хотите включить расширение MongoDB (например,
PHP 8.4
). - В правой панели найдите раздел Расширения (Extensions).
- Пролистайте вниз до
MongoDB
. - Переключите тумблер слева от MongoDB из серого (выключено) в зелёный (включено).
- Нажмите Сохранить (Save) внизу панели.
ServBay автоматически изменит конфигурационный файл PHP и перезапустит соответствующий сервис, чтобы изменения вступили в силу.
Ручное редактирование конфигурационного файла (опционально)
Если вы предпочитаете ручную настройку или нужны расширенные параметры, можно отредактировать файл конфигурации PHP напрямую. В большинстве случаев GUI-базированного включения достаточно.
Найдите папку
conf.d
нужной версии PHP. Например, для PHP 8.3 путь обычно такой:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Подкорректируйте путь с учетом вашей установки ServBay и версии PHP.
Откройте файл
mongodb.ini
в текстовом редакторе.Найдите строки:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3Уберите точку с запятой
;
перед строкойextension = mongodb.so
:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Сохраните файл.
Важно: После ручного редактирования необходимо перезапустить соответствующий сервис PHP для применения изменений. В GUI ServBay перейдите в раздел Пакеты (Packages), найдите нужную версию PHP и нажмите на кнопку перезапуска справа (круглая стрелка).
Запуск сервиса базы данных MongoDB
Включение PHP-расширения позволяет генерировать запросы к базе, но сама база данных должна быть запущена как сервис для хранения и обработки данных. ServBay также поставляет MongoDB как отдельный пакет, запуск которого происходит через GUI.
- Откройте приложение ServBay.
- В левой панели нажмите Пакеты (Packages).
- В списке пакетов найдите раздел Базы данных (Databases).
- Найдите пакет
MongoDB
. - Переключите тумблер слева от MongoDB из серого (остановлен) в зелёный (работает).
Сервис MongoDB стартует на порту 27017
по умолчанию.
Проверка модуля MongoDB и соединения с базой
После выполнения описанных выше шагов можно убедиться, что расширение PHP MongoDB загружено и сервис базы MongoDB работает должным образом.
Проверка загрузки расширения PHP
Создайте простой PHP-файл с выводом phpinfo()
:
- В корневой папке вашего сайта ServBay (например,
/Applications/ServBay/www
) создайте файлphpinfo.php
. - Добавьте в него:php
<?php phpinfo(); ?>
1
2
3 - Откройте этот файл в браузере, например, по адресу
https://servbay.demo/phpinfo.php
(гдеservbay.demo
— домен, указывающий на папку ServBaywww
). - В открытом окне phpinfo найдите "MongoDB". При успешной загрузке вы увидите отдельный раздел "mongodb" с версией расширения и деталями конфигурации.
(Обратите внимание: скриншот может отличаться от вашей версии ServBay и интерфейса)
Проверка соединения с базой
Создайте простой PHP-скрипт для теста соединения с локальным экземпляром MongoDB:
- Убедитесь, что в вашем проекте через Composer установлен официальный драйвер PHP для MongoDB. Если не установлен, перейдите в папку проекта и выполните:bash
composer require mongodb/mongodb
1 - Создайте файл, например,
test_mongodb.php
. - Вставьте следующий код:php
<?php require __DIR__ . '/vendor/autoload.php'; // Подкорректируйте путь в соответствии со структурой проекта echo "Attempting to connect to MongoDB...\n"; try { // Соединяемся с локальным MongoDB на порту 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Пробуем получить список баз, чтобы проверить соединение $listDatabases = $client->listDatabases(); echo "Successfully connected to MongoDB!\n"; echo "Available databases:\n"; foreach ($listDatabases as $databaseInfo) { echo "- " . $databaseInfo->getName() . "\n"; } } catch (\MongoDB\Driver\Exception\Exception $e) { echo "Failed to connect to MongoDB: " . $e->getMessage() . "\n"; } ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Запустите этот скрипт в терминале (используя нужную версию PHP из ServBay) или откройте через веб. В случае успеха появится сообщение об удачном соединении и список баз данных. В противном случае окажется видна ошибка (например, если MongoDB не запущен).
Использование MongoDB в PHP-коде
Когда расширение и сервис MongoDB включены и работают, можно использовать Composer-драйвер для выполнения различных операций с базой данных.
Установка драйвера MongoDB для PHP
Как отмечалось выше, рекомендуется использовать Composer для установки официального драйвера:
composer require mongodb/mongodb
Это установит пакет mongodb/mongodb
с зависимостями и сгенерирует файл vendor/autoload.php
.
Пример кода
Ниже приведён короткий пример для подключения к MongoDB, добавления и получения документа:
<?php
require __DIR__ . '/vendor/autoload.php'; // Не забудьте подключить автозагрузку Composer
echo "Connecting to MongoDB...\n";
try {
// Соединение с локальной MongoDB
$client = new MongoDB\Client("mongodb://localhost:27017");
// Выбор базы и коллекции
// Если база или коллекция ещё не созданы, MongoDB создаст их автоматически при первой записи
$collection = $client->servbay_demo_db->users; // Имя базы в примере — servbay_demo_db
echo "Connected. Performing operations...\n";
// Вставка документа
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Пример с брендовым именем
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // Использование BSON-даты
]);
printf("Inserted document with ID: %s\n", $insertResult->getInsertedId());
// Поиск документа
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Found document:\n";
if ($document) {
print_r($document);
} else {
echo "Document not found.\n";
}
// Обновление документа (необязательно)
$updateResult = $collection->updateOne(
['name' => 'Alice ServBay'],
['$set' => ['age' => 31, 'status' => 'updated']]
);
printf("Matched %d document(s) for update, modified %d document(s).\n", $updateResult->getMatchedCount(), $updateResult->getModifiedCount());
// Поиск обновлённого документа (необязательно)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Updated document:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Удаление документа (по желанию)
// $deleteResult = $collection->deleteOne(['name' => 'Alice ServBay']);
// printf("Deleted %d document(s).\n", $deleteResult->getDeletedCount());
} catch (\MongoDB\Driver\Exception\Exception $e) {
echo "An error occurred: " . $e->getMessage() . "\n";
} catch (\Exception $e) {
echo "An unexpected error occurred: " . $e->getMessage() . "\n";
}
echo "Script finished.\n";
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Сохраните код в файл, затем запустите его из терминала с помощью CLI-версии PHP из ServBay либо откройте через веб на сервере.
Замечания и лучшие практики
- Статус MongoDB: Перед использованием убедитесь, что статус пакета MongoDB в GUI ServBay — «работает».
- Порт по умолчанию: Стандартный порт MongoDB —
27017
. Для подключения по другому порту укажите его в строке подключения. В GUI можно посмотреть или изменить настройки порта. - Расширение vs. драйвер: Расширение PHP
mongodb.so
обеспечивает низкоуровневую коммуникацию, а Composer-пакетmongodb/mongodb
— более удобный объектно-ориентированный API. Для современных PHP-приложений обычно используются оба. - ServBay User CA/Public CA: ServBay может выдавать SSL-сертификаты с помощью собственного встроенного CA, что удобно для эмуляции HTTPS в локальной разработке. Хотя обычно для локального соединения MongoDB не требуется SSL, с более сложными настройками может понадобиться. ServBay также поддерживает получение реальных сертификатов через протокол ACME, резервное копирование данных, сброс пароля и другие функции, что делает его удобной комплексной средой.
- Инструменты администрирования БД: ServBay может не включать графические клиенты для MongoDB по умолчанию, но вы легко можете скачать официальный MongoDB Compass или использовать консольные утилиты mongo/mongosh для работы с экземпляром на локальной машине.
Часто задаваемые вопросы (FAQ)
В: Расширение PHP MongoDB включено, но скрипт не может подключиться к MongoDB. Что делать?
О: Проверьте, что сервис базы данных MongoDB действительно запущен через GUI ServBay. Расширение — только интерфейс, а реально работающий сервис — это сама база данных. Также удостоверьтесь, что строка подключения верна (обычно это mongodb://localhost:27017
).
В: В чем разница между расширением mongodb.so
и Composer-пакетом mongodb/mongodb
?
О: mongodb.so
— низкоуровневое расширение, предоставляющее PHP доступ к MongoDB через C-драйвер (libmongoc). Composer-пакет mongodb/mongodb
— библиотека на PHP, построенная поверх этого расширения, обеспечивающая простой объектно-ориентированный API для CRUD, агрегаций и т.д. В большинстве современных проектов используются оба компонента вместе.
В: Как изменить порт или другие конфигурации MongoDB?
О: В GUI ServBay вы можете просмотреть и изменить настройки пакета MongoDB, включая порт. Для продвинутых случаев можно отредактировать соответствующий конфиг MongoDB (путь к файлу отображается в деталях пакета в ServBay). После любых изменений обязательно перезапустите сервис MongoDB.
Заключение
ServBay даёт PHP-разработчикам действительно комфортную среду для работы с MongoDB. Благодаря интуитивному интерфейсу вы можете буквально в пару кликов включить расширение для PHP и запустить сервис базы данных MongoDB. Используя официальный драйвер, установленный через Composer, вы быстро развернете полноценную локальную среду PHP + MongoDB и сможете сосредоточиться на разработке бизнес-логики приложения. Интеграция и автоматизация многих рутинных задач в ServBay значительно ускоряет локальную разработку и тестирование.