安装 PHP 的 MongoDB 驱动扩展
MongoDB 是一个由C++语言编写的,基于分布式文件存储的数据库。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 支持的数据结构非常松散,是类似json的 bson 格式,因此可以存储比较复杂的数据类型。
MongoDB 是面向集合存储的。所谓“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
查看系统版本:
$ uname -a
Linux homestead 4.15.0-64-generic #73-Ubuntu
SMP Thu Sep 12 13:16:13 UTC 2019 x86_64 x86_64 x86_64
GNU/Linux
查看 PHP 版本:
$ php -v
PHP 7.4.0beta4 (cli) (built: Aug 28 2019 11:41:49) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v7.4.0beta4, Copyright (c), by Zend Technologies
$ /usr/bin/php7.4 -v
PHP 7.4.0beta4 (cli) (built: Aug 28 2019 11:41:49) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v7.4.0beta4, Copyright (c), by Zend Technologies
该机器中存在多个版本的PHP,默认版本 php 7.4
命令路径为 /usr/bin/php7.4
。
本例中使用 PECL 自动编译安装 MongoDB 扩展。
使用 PECL 的好处就是不用自己手动下载源码、编译、配置、安装(不用手动执行 phpize、configure、make、make install等命令)。
PECL 的全称是 The PHP Extension Community Library ,是一个开放的并通过 PEAR (PHP 扩展和应用仓库)打包格式来打包安装的 PHP扩展库仓库。通过 PEAR 的 Package Manager 的安装管理方式,可以对 PECL 模块进行下载和安装。
需要注意的是,PHP MongoDB 有2个扩展,我们需要安装的是新版的 php-mongodb,而不是已经废弃的 php-mongo。
扩展地址 https://pecl.php.net/package/mongodb 。目前该扩展的最新版本是 2020-03-11 发布的 mongodb-1.7.4.tgz
。
使用 pecl install mongodb
命令执行安装:
$ sudo pecl install mongodb
downloading mongodb-1.7.4.tgz ...
Starting to download mongodb-1.7.4.tgz (1,223,416 bytes)
.................... done: 1,223,416 bytes
533 source files, building
running: phpize
Configuring for:
PHP Api Version: 20190529
Zend Module Api No: 20190529
Zend Extension Api No: 320190529
... ...
Build process completed successfully
Installing '/usr/lib/php/20190529/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.7.4
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongodb.so" to php.ini
注意编译后生成的文件路径为: /usr/lib/php/20190529/mongodb.so
$ php7.4 -i |grep php.ini
Configuration File (php.ini) Path => /etc/php/7.4/cli
Loaded Configuration File => /etc/php/7.4/cli/php.ini
修改 php.ini 配置,指定扩展路径
$ vi /etc/php/7.4/cli/php.ini
新增一行扩展配置(本例中使用全路径):
# MongoDB 扩展路径
extension=/usr/lib/php/20190529/mongodb.so
查看 php -m 命令查看扩展模块中是否存在 mongodb:
$ php -m |grep mongo
mongodb
能查到该扩展,说明安装成功。
由于是在命令行执行,因此是立即生效的。如果要在fpm中生效,需要把 php-fpm 重新启动一下。
比如 Ubuntu 下可以执行:
$ sudo service php-fpm restart
$ sudo service php7.4-fpm restart // <-- php7.4
查看 php-fpm 进程
$ ps aux | grep php-fpm
PECL PHP扩展社区库 The PHP Extension Community Library
PEAR PHP扩展和应用仓库 PHP Extension and Application Repository
https://pecl.php.net/package/mongodb
https://www.cnblogs.com/jasonLiu2018/p/12514802.html
[END]