Сборка драйвера 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 установка по умолчанию И » XAMPP), обратите внимание, что каждая из них имеет собственную команду phpize и файл 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