在Ubuntu/CentOS 7/Windows上安装PHP MongoDB驱动程序
为了在我们的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) } } }