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