在Ubuntu/CentOS 7/Windows上安装PHP MongoDB驱动程序

时间:2020-07-27 12:59:01  来源:igfitidea点击:

为了在我们的PHP程序中使用MongoDB,我们需要安装PHP MongoDB驱动程序。
它是一个PHP扩展程序,管理与MongoDB服务器的连接,并使我们能够通过PHP在NoSQL数据库上执行各种操作。

在本教程中,我们将看到如何在Ubuntu,CentOS 7和Microsoft Windows上安装和配置MongoDB PHP驱动程序。

在Ubuntu上安装MongoDB PHP驱动程序

MongoDB PHP驱动程序为Ubuntu提供由PHP-MongoDB包提供,我们可以使用apt-get命令安装。

sudo apt-get update
sudo apt-get install php-mongodb

然后,重新启动Apache Web服务器:

sudo systemctl restart apache2.service

要验证安装,我们可以运行phpinfo()函数。
PHPINFO页面应显示MongoDB详细信息,如下所示。

从命令行中,我们可以运行php -i命令获取MongoDB驱动程序的信息。

php -i | grep mongo

在CentOS 7上安装PHP MongoDB驱动程序

PHP MongoDB驱动程序在CentOS 7上,用于从EPEL存储库中获得PHP 5.

首先,启用EPEL存储库:

sudo yum -y install epel-release
sudo yum repolist

安装PHP-MongoDB包:

sudo yum -y install php-mongodb

重新启动httpd服务器:

sudo systemctl restart httpd

如果我们使用WebTative存储库安装了PHP 7,则包名称应与“PHP71W-PECL-MongoDB”类似。

我们可以使用yum search命令搜索可用包。

yum search php | grep -i mongo

Selinux将阻止MongoDB驱动程序在CentOS 7上。
作为一个解决方案,我们可以禁用SELinux或者启用“httpd_can_network_connect_db”布尔值。

sudo setsebool -P httpd_can_network_connect_db 1

以下是Selinux在CentOS 7上引起的示例PHP错误:

PHP Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling ismaster on 'localhost:27017']

在Windows 10/Windows Server 2014上安装PHP MongoDB驱动程序

重要提示:对于Windows,根据PHP版本,架构,是否启用了线程安全性,我们需要为PHP下载正确的MongoDB驱动程序。
我们可以从PHPINFO页面获取这些信息。

执行以下步骤以在Windows XAMPP服务器上安装和配置MongoDB驱动程序。

  • 从以下URL https://pecl.php.net/package/mongodb下载最新的稳定版本的PHP MongoDB驱动程序。
  • 提取存档文件。
  • 将php_mongodb.dll文件从提取的文件夹复制到PHP扩展目录。这通常是XAMPP服务器中的“C:\xampp \ php \ ext”文件夹。
  • 在PHP安装中打开PHP.ini文件(C:\XAMPP \ PHP)并添加以下行:
extension=php_mongodb.dll
  • 保存文件并关闭它。重新启动Apache Web服务器。

从PHP脚本测试MongoDB连接

让我们编写一个非常简单的PHP程序,可以创建与MongoDB服务器的连接并转储连接状态。

将以下PHP代码添加到PHP脚本并从Web浏览器访问。

<?php
$connection = new MongoDB\Driver\Manager("mongodb://localhost:27017");
var_dump($connection);
?>

上述PHP示例将输出类似下面内容:

object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(25) "mongodb://localhost:27017" ["cluster"]=> array(1) { [0]=> array(11) { ["host"]=> string(9) "localhost" ["port"]=> int(27017) ["type"]=> int(0) ["is_primary"]=> bool(false) ["is_secondary"]=> bool(false) ["is_arbiter"]=> bool(false) ["is_hidden"]=> bool(false) ["is_passive"]=> bool(false) ["tags"]=> array(0) { } ["last_is_master"]=> array(0) { } ["round_trip_time"]=> int(-1) } } }