CakeFest 2024: The Official CakePHP Conference

Сборка драйвера 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

add a note

User Contributed Notes 3 notes

up
26
chatocoral at gmail dot com
6 years ago
You think this is to complicated? You use Ubuntu 14 or 16? use this:

sudo apt-get install php-mongodb

This installs everything you need to use MongoDB inside PHP.

Don't stop using MongoDB, is the best that will happen to you.

You're Welcome.
up
0
fgm at osinet dot fr
7 years ago
a) If your git version is not recent enough, as can happen e.g. on Ubuntu 12.04 LTS, git submodule --init won't exist
In that case use:

git submodule init
git submodule update

b) make install does not create a mongodb.conf configuration file to support the debian/ubuntu PHP versions phpenmod/phpdismod commands. To have them work:

- do not add the extension=mongodb.so line to php.ini
- add it to a mongodb.ini file in the PHP mods-available directory
- the commands will then work for this extension

c) if you have multiple versions of PHP on a system such as b), the phpenmod/phpdismod commands may fail if the extension is not built for the default PHP CLI version. To have it be enabled for a specific version, use the -v argument, like

phpenmod -v php7.1 mongodb
up
-2
Anisur Rahman (anisur2805 at gmail dot com)
3 years ago
After installing mongodb, in terminal there are couple of error ex.

PHP Warning: PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: C:\xampp\php\ext\mongodb.so (The specified module could not be found.), C:\xampp\php\ext\php_mongodb.so.dll (The specified module could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: C:\xampp\php\ext\mongodb.so (The specified module could not be found.), C:\xampp\php\ext\php_mongodb.so.dll (The specified module could not be found.)) in Unknown on line 0

https://prnt.sc/ubr5mq

Solution:
1. If you include mongodb extension in php.ini file first remove that
2. Goto your php path inside Xampp and create an file called mongodb.ini and pest this below line, see ss - https://prnt.sc/ubr7ii
code extension=mongodb.so

This solution works in windows 10, php 7.4 version
To Top