- 方式一:编译安装扩展
- 遇到的问题及解决
- 方式二:PECL安装扩展
版本对应关系表:https://www.mongodb.com/docs/drivers/php/
环境:
MacOS Mojave 版本 10.14.4 (18E2035)
$ php -v
PHP 7.1.23
方式一:编译安装扩展
下载mongodb扩展
https://pecl.php.net/package/mongodb
# 截止2021-08-26最新
$ wget https://pecl.php.net/get/mongodb-1.10.0.tgz
# 解压
$ tar -zxvf mongodb-1.10.0.tgz
# 进入目录
$ cd mongodb-1.10.0
# 生成configure文件
$ phpize
# 编译安装,如果只有一个php版本可省略参数 --with-php-config
$ ./configure --with-php-config=php-config
$ make && make install
# 查看扩展目录
$ php -i | grep extension_dir
# 查看生成的.so扩展文件
$ ls /usr/lib/php/extensions/no-debug-non-zts-20160303
mongodb.so opcache.a opcache.so xdebug.so
# 查看ini文件路径
$ php --ini
在配置文件 php.ini 中加入一行配置:
extension=mongodb.so
检查
# 查看PHP的mongodb扩展模块
$ php -m | grep mongodb
也可以用phpinfo();
查看扩展安装信息
参考 macOs-sdk headers for macos 10.14 该软件包与mac os 不兼容 mac下PHP安装mongodb的扩展 php7.2 安装mongodb扩展 生成mongodb.so文件 Operation Not Permitted 错误问题 MongoDB PHP 扩展
遇到的问题及解决1、执行 phpize 显示目录不存在
$ phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
原因是 /usr/include 文件夹不存在
处理方式:
$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
如果提示不兼容,则需要重装一下
$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
2、编译安装时提示没有权限
一种说法是修改MacOS的文件权限,我试了之后不好使
我的处理方式是,将编译生成的文件 modules/mongodb.so
拷贝到目标扩展文件夹
cp ./modules/mongodb.so /usr/lib/php/extensions/no-debug-non-zts-20160303
方式二:PECL安装扩展
1、先安装PECL/PEAR
官方文档:https://pear.php.net/manual/en/installation.getting.php
$ curl -O https://pear.php.net/go-pear.phar
$ sudo php -d detect_unicode=0 go-pear.phar
选择1,改为: /usr/local/pear 选择4,改为: /usr/local/bin
2、检查
$ pear version
3、安装mongodb扩展
$ sudo pecl install mongodb
4、配置php.ini 文件,添加 配置
extension=mongodb.so
其他指令
# 系统版本
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.4
# pear和PHP版本
$ pear version
PEAR Version: 1.10.13
PHP Version: 7.1.23
# 安装最新版本扩展
pecl install mongodb
# 安装指定版本
pecl install https://pecl.php.net/get/mongodb-1.11.0.tgz
# 查看已安装的扩展
$ pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
mongodb 1.11.0 stable
# 如果提示已存在,先卸载
pecl uninstall mongodb
# 处理 mac安装报错
fatal error: 'pcre.h' file not found
brew install pcre
# 安装依赖(根据PHP版本指定版本)
composer require mongodb/mongodb:1.10.0
参考 macOS 上安装 PECL PHP7 MongDB 安装与使用 Mac M1芯片运行go项目时报错,include <pcre.h> ~~, fatal error: ‘pcre.h‘ file not found