Сборка драйвера 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-libbson=yes --with--libmongoc=yes команды configure. Начиная с версии 1.7.0 модуля, эти аргументы устарели, и вы должны использовать вместо них --with-mongodb-system-libs=yes.

Полный список опций команды configure можно получить с помощью configure --help.

При использовании встроенных версий libbson и libmongoc, драйвер также попытается выбрать библиотеку SSL в соответствии с опцией --with-mongodb-ssl команды configure. По умолчанию это --with-mongodb-ssl=auto, что приведёт к поиску в таком порядке: Secure Transport (только macOS), OpenSSL, LibreSSL. Также вы можете явно указать openssl, libressl или darwin.

Замечание:

Если процесс установки не сможет найти библиотеку 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-20151012/

Убедитесь, что директива extension_dir файла php.ini указывает на каталог, в котором присутствует библиотека mongodb.so. Проверить значение этой директивы можно так:

$ php -i | grep extension_dir
  extension_dir => /usr/lib/php/extensions/debug-non-zts-20151012 =>
                   /usr/lib/php/extensions/debug-non-zts-20151012

Если директории отличаются, то поменяйте значение extension_dir в php.ini или просто переместите mongodb.so в нужную директорию.

Добавьте следующую строку в файл php.ini для каждого окружения, в котором вы собираетесь использовать драйвер:

extension=mongodb.so