安装 PHP 的 MongoDB 驱动扩展

安装 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

安装编译MongoDB扩展

本例中使用 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

修改 PHP 配置文件

$ 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]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章