Информацию об установке этого PECL-модуля даёт глава руководства «Установка PECL-модулей». Дополнительная информация о новых версиях, скачивании, исходных файлах, о разработчике и журнале изменений доступна по ссылке: » https://pecl.php.net/package/mongodb
Пользователи Linux, Unix и macOS запускают следующую команду для установки модуля:
$ sudo pecl install mongodb
На системах с несколькими установленными версиями PHP (например для macOS: установка по умолчанию, Homebrew и » XAMPP) у каждой версии PHP будет своя команда pecl и файл (или файлы) php.ini. Кроме того, каждому PHP-окружению наподобие CLI или web разрешается использовать отдельные файлы php.ini.
Начиная с версии модуля 1.17.0 PECL будет запрашивать разные
настройки configure
. Чтобы установить модуль с параметрами
по умолчанию в неинтерактивном скрипте, команду yes
с вводом пустой строки
присоединяют через символ вертикальной черты к команде
pecl install
:
$ yes '' | sudo pecl install mongodb
Полный список поддерживаемых параметров configure
доступен в файле package.xml
, который включили в пакет PECL.
Чтобы установить модуль со специфичными параметрами configure
в неинтерактивном сценарии, указывают параметр
--configureoptions
для команды pecl install
:
$ sudo pecl install --configureoptions='with-mongodb-system-libs="yes" enable-mongodb-developer-flags="no"' mongodb
По умолчанию установка модуля через PECL использует встроенные версии модулей: » libbson, » libmongoc, » libmongocrypt и попытается сконфигурировать их автоматически.
Замечание: Когда процесс установки не находит библиотеку SSL, проверяют, что установили пакеты для разработки наподобие
libssl-dev
и пакет » pkg-config. Проводят ручную установку, если это не помогает.
И наконец, добавляют следующую строку в файл php.ini для каждого окружения, в котором будет работать модуль:
extension=mongodb.so
Начиная с » Homebrew 1.5.0 пакет » Homebrew/php tap объявили устаревшим, а формулы для отдельных модулей PHP удалили. Пользователям macOS рекомендуют устанавливать драйвер через формулу » php и запускать предоставленную PHP, установленным через менеджер пакетов Homebrew, команду pecl, как рассказывает стандартная инструкция по установке из репозитория PECL.
Предварительно скомпилированные исполняемые файлы прикрепляются к » выпускам проекта на GitHub. Архивы публикуются для разных комбинаций версии PHP, потоковой безопасности (TS или NTS) и архитектуры (x86 или x64). Определите правильный архив для PHP-окружения и извлеките файл php_mongodb.dll в директорию с модулями (по умолчанию "ext").
Добавьте следующую строку в файл php.ini для каждого окружения, в котором будет работать модуль:
extension=php_mongo.dll
Неправильный выбор двоичного файла вызовет ошибку при попытке загрузить DLL-модуль во время выполнения:
PHP Warning: PHP Startup: Unable to load dynamic library 'mongodb'
Убедитесь, что DLL-файл, который скачали, соответствует следующим свойствам среды выполнения PHP:
PHP_VERSION
)PHP_ZTS
)PHP_INT_SIZE
)Просмотр этих свойств доступен в выводе функции phpinfo(). Дважды проверьте, что вывод функции phpinfo() соответствует окружению, если в систему установили несколько версий PHP.
Замечание: Дополнительные DLL-зависимости для пользователей Windows
Чтобы модуль работал, системной переменной PATH, которую содержит операционная система Windows, дают доступ к DLL-файлам. Раздел FAQ «Как добавить директорию PHP в переменную PATH в Windows» рассказывает, как это сделать. Не рекомендуют копировать DLL-файлы из директории PHP в системную папку Windows, хотя это также решает проблему (потому что системная директория по умолчанию записана в переменной PATH). Модулю нужны следующие файлы в переменной PATH: libsasl.dll
Разработчики и пользователи, которые заинтересованы в последних исправлениях ошибок, компилируют модуль из последнего исходного кода » на сайте GitHub. Запустите следующие команды, чтобы клонировать и собрать проект:
$ git clone https://github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule update --init $ phpize $ ./configure $ make all $ sudo make install
В системах с несколькими установленными версиями PHP (например, macOS: установка по умолчанию, Homebrew, » XAMPP) у каждой версии PHP будет своя команда phpize и файл (или файлы) php.ini. Кроме того, каждое окружение PHP (например, CLI, web) может использовать отдельные файлы php.ini.
По умолчанию модуль использует встроенные версии библиотек
» libbson,
» libmongoc
и » libmongocrypt
и попытается настроить библиотеки автоматически. Библиотеки доступны модулю через передачу
параметра --with-mongodb-system-libs=yes
команде configure
,
если эти библиотеки уже установили в систему.
Полный список параметров команды configure
получают
через запуск команды: configure --help.
При работе со встроенными версиями библиотек libmongoc и libmongocrypt,
модуль также попытается выбрать SSL-библиотеку
в соответствии с параметром
--with-mongodb-ssl
команды configure
.
Начиная с версии модуля 1.17.0 по умолчанию предпочтение отдаётся библиотеке OpenSSL.
Предыдущие версии драйвера на системах с macOS по умолчанию выбирали Secure Transport,
а на остальных платформах — OpenSSL.
Замечание:
Потребуется проверить, установили ли пакеты для разработки наподобие
libssl-dev
и пакет » pkg-config, если процесс установки не найдёт SSL-библиотеку.Система часто содержит набор версий библиотеки OpenSSL, когда пакетами на macOS управляют через утилиту Homebrew. Дополнительный путь, по которому программа
pkg-config
будет искать файлы, указывают в переменной средыPKG_CONFIG_PATH
, чтобы выбрать правильную версию библиотеки OpenSSL.
На последнем, финальном шаге, команда make install выведет путь, по которому собрали модуль mongodb.so. Например, вот так:
Installing shared extensions: /usr/lib/php/extensions/debug-non-zts-20220829/
Убедитесь, что директива extension_dir файла php.ini указывает на каталог, в котором лежит модуль mongodb.so. Значение директивы проверяют вот так:
$ php -i | grep extension_dir extension_dir => /usr/lib/php/extensions/debug-non-zts-20220829 => /usr/lib/php/extensions/debug-non-zts-20220829
Значение директивы extension_dir изменяют в файле php.ini или просто перемещают файл mongodb.so в правильную директорию, если директории отличаются.
И наконец, добавьте следующую строку в файл php.ini для каждого окружения, в котором планируется использовать модуль:
extension=mongodb.so