mac OS版本为10.13.3。
PHP版本为7.1.16。
mongodb的PHP扩展的版本为1.4.3。
phpize路径为/usr/local/php/bin/phpize。
php-config路径为 /usr/local/php/bin/php-config。
1.首先下载php的mongodb扩展
从http://pecl.php.net/package/mongodb这个网址下载mongodb的扩展源码包(注意:不要从http://pecl.php.net/package/mongo下载,因为这个package已经过期),在命令行执行如下命令:
wget http://pecl.php.net/get/mongodb-1.4.3.tgz
2.解压安装包
tar -zxvf mongodb-1.4.3.tgz
3.进入解压目录,运行phpize,为安装扩展准备环境
cd mongodb-1.4.3
/usr/local/php/bin/phpize
4.安装编译mongodb的php扩展
第3步执行完成后,在当前目录下就生成了configure文件。接下来,使用./configure命令进行安装配置;然后,使用make && make install进行编译安装,命令如下:
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
5. 查看是否在PHP扩展目录中已经生成.so扩展文件
php -i | grep extension_dir //查看PHP扩展包存储目录,这里为extension_dir => /usr/local/lib/php/pecl/20160303 => /usr/local/lib/php/pecl/20160303
ls /usr/local/lib/php/pecl/20160303 //查看目录中是否有mongodb.so文件
6.编辑php.ini,在extension区域添加mongodb扩展
extension=mongodb.so
注意:扩展的名称是mongodb.so,不是mongo.so。
7.查看PHP的mongodb扩展模块是否已经成功安装
php -m | grep mongodb
如果在直接结果中看到mongodb,就说明已经安装成功。
或着,重启php-fpm,然后执行phpinfo()方法。若看到mongodb的内容,则说明安装成功。
8. 在PHP中使用mongodb扩展
在安装完成PHP的mongodb的扩展后,在composer.json文件的require块中添加"mongodb/mongodb": "^1.4"。然后,再通过composer命令加载mongodb PHP版本客户端的扩展包,命令如下所示:
composer require mongodb/mongodb
结果报了如下的错误:
Using version ^1.4 for mongodb/mongodb
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- mongodb/mongodb 1.4.2 requires ext-mongodb ^1.5.0 -> the requested PHP extension mongodb has the wrong version (1.4.3) installed.
- mongodb/mongodb 1.4.2 requires ext-mongodb ^1.5.0 -> the requested PHP extension mongodb has the wrong version (1.4.3) installed.
- mongodb/mongodb 1.4.1 requires ext-mongodb ^1.5.0 -> the requested PHP extension mongodb has the wrong version (1.4.3) installed.
- mongodb/mongodb 1.4.0 requires ext-mongodb ^1.5.0 -> the requested PHP extension mongodb has the wrong version (1.4.3) installed.
- Installation request for mongodb/mongodb ^1.4 -> satisfiable by mongodb/mongodb[1.4.0, 1.4.1, 1.4.2].
To enable extensions, verify that they are enabled in your .ini files:
- /usr/local/etc/php/7.1/php.ini
- /usr/local/etc/php/7.1/conf.d/ext-opcache.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Installation failed, reverting ./composer.json to its original content.
分析发现,是安装的mongodb扩展版本太低。于是,改为1.5.3版本(mongodb-1.5.3.tgz),重新操作一遍,再次通过composer命令加载mongodb PHP版本客户端的扩展包,就好了。具体信息如下:
sing version ^1.4 for mongodb/mongodb
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 12 updates, 1 removal
- Removing aliyuncs/oss-sdk-php (v2.3.0)
- Updating league/flysystem (1.0.48 => 1.0.49): Downloading (100%)
- Installing ralouphie/getallheaders (2.0.5): Loading from cache
- Updating guzzlehttp/psr7 (1.4.2 => 1.5.0): Checking out 53662d6688
- Installing symfony/contracts (v1.0.1): Downloading (100%)
- Updating symfony/translation (v4.1.7 => v4.2.0): Checking out ff9a878c9b
- Updating nesbot/carbon (1.34.3 => 1.36.1): Checking out 63da8cdf89
- Updating symfony/dom-crawler (v4.1.7 => v4.2.0): Checking out 7438a32108
- Updating symfony/browser-kit (v4.1.7 => v4.2.0): Checking out db7e59fec9
- Updating symfony/console (v4.1.7 => v4.2.0): Checking out 4dff24e5d0
- Updating symfony/css-selector (v4.1.7 => v4.2.0): Checking out aa9fa526ba
- Updating symfony/event-dispatcher (v4.1.7 => v4.2.0): Checking out 9b788b5f7c
- Updating symfony/finder (v4.1.7 => v4.2.0): Checking out e53d477d7b
- Updating symfony/process (v4.1.7 => v4.2.0): Checking out 2b341009cc
- Updating symfony/yaml (v4.1.7 => v4.2.0): Checking out c41175c801
- Installing library/aliyun-oss-php-sdk (v2.3.0): Cloning 6e801c85b9 from cache
- Installing mongodb/mongodb (1.4.2): Downloading (100%)
- Installing justinrainbow/json-schema (5.2.7): Downloading (100%)
symfony/contracts suggests installing psr/cache (When using the Cache contracts)
symfony/contracts suggests installing psr/container (When using the Service contracts)
symfony/contracts suggests installing symfony/cache-contracts-implementation ()
symfony/contracts suggests installing symfony/service-contracts-implementation ()
Package phpunit/dbunit is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files