Сборка драйвера PHP MongoDB из исходного кода

Разработчики драйверов и заинтересованные в самых свежих версиях пользователи могут собрать драйвер из исходных кодов: » 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.

Замечание:

Если процесс установки не сможет найти библиотеку SSL, убедитесь, что установлены пакеты для разработки (такие как libssl-dev) и пакет » pkg-config.

При использовании Homebrew для macOS, обычна ситуация, когда установлено несколько разных версий OpenSSL. Для использования именно той версии, которая вам нужна, соответствующим образом установите переменную окружения PKG_CONFIG_PATH. Она будет использоваться pkg-config для определения пути поиска . Если не используется pkg-config, то можно использовать configure с ключом --with-openssl-dir=DIR (только для 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