从 Ubuntu 20.04 开始,数据库中的 php-mongodb 已过时,您需要使用 PECL 方法来安装最新版本的 MongoDB。
要在 Ubuntu 中执行此操作,您需要 php-pear 插件和 php-dev
sudo apt install php-dev php-pear
然后您可以运行
sudo pecl install mongodb
有关安装此 PECL 扩展的信息可以在手册章节中找到,标题为 安装 PECL 扩展。其他信息,例如新版本、下载、源文件、维护者信息和更改日志,可以在这里找到: » https://pecl.php.net/package/mongodb
Linux、Unix 和 macOS 用户可以运行以下命令来安装扩展
$ sudo pecl install mongodb
在安装了多个 PHP 版本的系统(例如 macOS 默认版本、Homebrew、» XAMPP)上,每个 PHP 版本都将有自己的 pecl 命令和 php.ini 文件。此外,每个 PHP 环境(例如 CLI、Web)可能使用单独的 php.ini 文件。
从扩展版本 1.17.0 开始,PECL 将提示各种 configure
选项。要在非交互式脚本中使用默认选项安装扩展,可以使用 yes
命令将空字符串输入管道到 pecl install
$ yes '' | sudo pecl install mongodb
支持的 configure
选项的完整列表可以在 PECL 包中包含的 package.xml
文件中找到。要在非交互式脚本中使用特定 configure
选项安装扩展,可以使用 pecl install
的 --configureoptions
选项
$ sudo pecl install --configureoptions='with-mongodb-system-libs="yes" enable-mongodb-developer-flags="no"' mongodb
默认情况下,通过 PECL 安装扩展将使用 » libbson、» libmongoc 和 » libmongocrypt 的捆绑版本,并尝试自动配置它们。
注意: 如果构建过程无法找到 SSL 库,请检查开发包(例如
libssl-dev
)和 » pkg-config 是否都已安装。如果这无法解决问题,请考虑使用 手动安装 过程。
最后,将以下行添加到每个需要使用扩展的环境的 php.ini 文件中
extension=mongodb.so
从 Ubuntu 20.04 开始,数据库中的 php-mongodb 已过时,您需要使用 PECL 方法来安装最新版本的 MongoDB。
要在 Ubuntu 中执行此操作,您需要 php-pear 插件和 php-dev
sudo apt install php-dev php-pear
然后您可以运行
sudo pecl install mongodb
可能还需要 pkg-config(在 Ubuntu 14.04 上)。
$ pecl install mongodb
...
configure: error: Cannot find OpenSSL's libraries
ERROR: `/tmp/pear/temp/mongodb/configure --with-php-config=/usr/bin/php-config' failed
但
$ apt-get install pkg-config
...
正在设置 pkg-config (0.26-1ubuntu4) ...
$ pecl install mongodb
...
构建过程已成功完成
正在安装 '/usr/lib/php/20151012/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.1.7
配置选项“php_ini”未设置为 php.ini 位置
您应该将“extension=mongodb.so”添加到 php.ini
在 Ubuntu 上,您只需执行
sudo apt-get install php-mongodb
或针对特定 PHP 版本执行相同操作
sudo apt-get install php5.6-mongo
或者
sudo apt-get install php7.0-mongodb
Ubuntu 16.04
sudo apt-get install libcurl4-openssl-dev pkg-config libssl-dev libsslcommon2-dev
sudo pecl install mongodb
在 fpm 和 cli 中添加 extension=mongodb.so
sudo vim /etc/php/7.0/fpm/conf.d/30-mongodb.ini
sudo vim /etc/php/7.0/cli/conf.d/30-mongodb.ini
重新启动服务
sudo systemctl restart php7.0-fpm
sudo systemctl reload nginx
[编辑注:已修复错别字]
您需要构建 pecl 包,还需要一些其他要求。
sudo apt-get install libcurl4-openssl-dev pkg-config libssl-dev libsslcommon2-dev
我遇到了错误“fatal error: pcre.h: No such file or directory”,并且还必须安装另一个依赖项
sudo apt-get install libpcre3-dev
以下步骤对我在 Centos7 上有效
sudo yum install -y openssl-devel
sudo yum install pecl
sudo yum install gcc
sudo pecl install mongodb
嗨,
我正在研究 php mongo db 驱动程序的安装。
我使用 phpinfo 检查过,它显示 mongodb 模块已加载,但当我使用它时,我的代码会给出错误“Fatal error: Uncaught Error: Class 'MongoDB' not found”
我还有另一个用于 redis 的模块,它运行得很好。最初我遇到的是相同的错误,但 phpinfo 显示模块未加载。
我认为驱动程序存在一些问题。我已经尝试了所有提到包含 extenstion=mongodb.so 的文档和网站链接,我已经这样做了。
我使用的是带有 apache 服务器的 open suse 42.2 leap。
你能帮我调查一下这个问题吗?
如果你需要更多信息,请告诉我。
谢谢
Maneeshg
安装并添加 extension=mongodb 到 php.ini 后,当我运行 php -v 时,我收到此错误
bus error php -v
会是什么问题?构建过程已成功完成。