For driver developers and people interested in the latest bugfixes, you can compile the driver from the latest source code on » Github. Run the following commands to clone and build the project:
$ 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
If your system has multiple version of PHP installed (e.g. macOS default and » XAMPP), note that each version of PHP has its own phpize command and php.ini file.
By default, the driver will use bundled versions of
» libbson,
» libmongoc, and
» libmongocrypt and
attempt to configure them on its own. If these libraries are already
installed as system libraries, you can instruct the driver to utilize them by
specifying --with-libbson=yes --with--libmongoc=yes
as
arguments to configure
. Starting with version 1.7.0 of the
extension, these arguments are deprecated and you should use
--with-mongodb-system-libs=yes
instead.
For a complete list of configure
options, run
configure --help.
When using bundled versions of libbson and libmongoc, the driver will also
attempt to select an SSL library according to the
--with-mongodb-ssl
option for
configure
. The default value is
--with-mongodb-ssl=auto
, which will search for Secure
Transport (macOS only), OpenSSL, and LibreSSL, in that order. Additionally,
you may specify openssl
, libressl
, or
darwin
to force selection of a particular library,
respectively.
Note:
If the build process fails to find an SSL library, check that the development packages (e.g.
libssl-dev
) and » pkg-config are both installed.When using Homebrew on macOS, it is common for a system to have multiple versions of OpenSSL installed. To ensure that the desired version of OpenSSL is selected, the
PKG_CONFIG_PATH
environment variable may be used to control the search path forpkg-config
. Ifpkg-config
is not used,configure
also supports a--with-openssl-dir=DIR
argument, which can be used to specify a manual search path (for OpenSSL only).
The final build step, make install, will report where mongodb.so has been installed, similar to:
Installing shared extensions: /usr/lib/php/extensions/debug-non-zts-20151012/
Ensure that the extension_dir option in php.ini points to the directory where mongodb.so was installed. You can query for the option by running:
$ php -i | grep extension_dir extension_dir => /usr/lib/php/extensions/debug-non-zts-20151012 => /usr/lib/php/extensions/debug-non-zts-20151012
If the directories differ, either change extension_dir in php.ini or manually move mongodb.so to the correct directory.
Finally, add the following line to your php.ini file:
extension=mongodb.so