我非常渴望开始使用 PHP 7,但是遇到了一个问题……我主要使用 MongoDB 作为数据库,问题是我不知道如何为 PHP 7 安装 MongoDB 驱动程序/客户端.
我当前的安装是 PHP 5.6,在我的 Macbrew install php56-mongo
上可以解决问题。
谁能推荐我如何在我的 Mac 或 Ubuntu 安装上使用它?
在此先感谢,非常感谢!
我非常渴望开始使用 PHP 7,但是遇到了一个问题……我主要使用 MongoDB 作为数据库,问题是我不知道如何为 PHP 7 安装 MongoDB 驱动程序/客户端.
我当前的安装是 PHP 5.6,在我的 Macbrew install php56-mongo
上可以解决问题。
谁能推荐我如何在我的 Mac 或 Ubuntu 安装上使用它?
在此先感谢,非常感谢!
PHP 5.99.99 或更早版本的 Mongo 扩展已被取代:
https://pecl.php.net/package/mongo
使用较新的 PHP 版本7.99.99或更早版本:
https://pecl.php.net/package/mongodb
您可以自动安装 PECL/PEAR 扩展:
pecl install mongodb
或 手动。
课程也发生了变化:
new \MongoClient(); // legacy class!
见http://php.net/manual/en/book.mongo.php
new \MongoDB\Driver\Manager(); // new classes!
见http://php.net/manual/en/set.mongodb.php
可在此处找到有关兼容性的其他信息:
https://docs.mongodb.org/ecosystem/drivers/php/#compatibility
支持 PHP 7 的 MongoDB 驱动程序仅在 12 月 22 日发布- 其可能的下游存储库(如 brew)尚未更新。
更新确认当前没有php70-mongo
brew 脚本,尽管有一个活动的拉取请求来添加一个。
与此同时,您也许可以通过 pecl 手动安装它:
pecl channel-update pecl.php.net
pecl install mongodb
echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
您可以尝试使用以下方法安装 mongodb 驱动程序:
sudo apt-get install php-mongodb
如何在 ubuntu 16.04 lts 中将 php 7.0 与 MongoDB 连接?
1) 使用以下链接安装 LAMP。它安装 Apache2、mysql 和 php 7.0。 https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04
2) 使用以下链接中的步骤在 Ubuntu 上安装 MongoDB 社区版。 http://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
3) 键入以下命令从 pecl 获取 mongoDB 扩展
sudo apt install php-pear
4)将以下内容添加到 php.ini 文件中/etc/php/apache2/7.0
extension=mongodb.so
重要 - 课程也已更改:
new MongoClient(); //Old Class
new MongoDB\Driver\Manager(); // New Class
我也差点放弃了。对于 PHP 7x 的 MongoDB 驱动程序,Ubuntu 18.04 Pecl 将不起作用。相反,请尝试:
sudo apt-get install php-mongodb
然后在项目文件夹的基础上安装 mongodb 库https://docs.mongodb.com/php-library/current/tutorial/install-php-library/
composer require mongodb/mongodb
composer install
它访问驱动程序提供的较低级别的功能。
最后,转到 php.ini 并添加
extension = mongo.so
并重新启动apache
要进行测试,请尝试将其添加到 php 文件中:
<?php
require_once __DIR__ . "/vendor/autoload.php";
$collection = (new MongoDB\Client)->test->users;
print_r($collection);
?>
不,很遗憾,旧版驱动程序不支持 PHP7。这是正式完成的提交和JIRA Ticket 。
新的 PHP MongoDB 驱动程序可在此处的 PECL(或GitHub)中找到。
要安装,只需:
pecl channel-update pecl.php.net
pecl install mongodb
echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
可以在此处找到新驱动程序的文档。我想包含文档中的注释:
最终,此扩展不打算单独使用。用户应考虑将此驱动程序与一个或多个用户级 PHP 库(例如mongo-php-library )一起使用。
新的mongodb
驱动程序/PHP 扩展比旧mongo
驱动程序低级得多,鼓励您在驱动程序之上使用更高级别的库,而不是直接在代码中使用它。
Mongo PHP 库( releases ) 是 PHP的官方高级库,建议在您的项目中使用它。它仍处于 Beta 阶段,但这似乎仍然是 PHP7 最安全和最面向未来的前进道路。
有人可能会将旧版驱动程序移植到 PHP7,但可能不需要它,因为旧版驱动程序还有许多其他问题。
PHP 版本 5.99.99 或更早版本的 MongoDB 驱动程序是: https://pecl.php.net/package/mongo 安装我们需要使用:
sudo apt-get install php-pear php5-dev
sudo pecl 安装 mongo
从 PHP 7 开始,这是新的驱动程序
https://pecl.php.net/package/mongodb要安装它,请使用:sudo pecl install mongodb
如果您使用 Laravel 框架或带有 composer 的项目,那么这个库是最合适的一个: https ://github.com/jenssegers/Laravel-MongoDB 使用 3.0.0 版本来获得 PHP 7 和 Laravel 5 支持,否则使用旧版本 2.2.2 Composer 命令:
作曲家需要 jensegers/mongodb
如果您使用其他没有 composer 的 PHP 框架,请使用这个库:https ://github.com/mongodb/mongo-php-library ,上面提到的库中也使用了它
老问题,但新的优秀解决方案。只需使用Mongostead7自动脚本来安装所有需要的东西。为我工作得很好。不需要额外的工作。
按如下方式使用它:
sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | sudo sh
补充答案并发布对我有用的内容:
1 按照本指南安装灯https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04(第三步仅用于安装 mongo 客户端)
2$ sudo apt-get install php7.0-dev
3$ sudo pecl install mongodb
4$ sudo nano /etc/php/7.0/apache2/php.ini
在文件中添加以下行:
扩展 = mongo.so;
(您可能需要指定文件的确切位置。在我的情况下,该文件位于 /usr/lib/php/20151012/mongodb.so 中。)
这就是为 php 7.0 安装 mongo 客户端的全部内容
我正在补充 Pransh Tiwari 的答案
Ubuntu 16.0.4 (07.12.2016)
安装 PHP-MONGODB 驱动程序: 命令:
- sudo pecl install mongodb -> résultat:构建过程成功完成-1.2.0 配置选项“php_ini”未设置为 php.ini 位置您应该将“extension=mongodb.so”添加到 php.ini
-> la librairie se trouve dans "/usr/lib/php/20151012/mongodb.so"
- sudo systemctl restart apache2.service
https://secure.php.net/manual/en/mongodb.installation.pecl.php
- create 2 new files called "30-mongodb.ini" in both path to add the extension to your server:
-/etc/php/7.0/fpm/conf.d/30-mongodb.ini
-/etc/php/7.0/cli/conf.d/30-mongodb.ini
Commandes :
sudo nano /etc/php/7.0/fpm/conf.d/30-mongodb.ini
-> add "extension=mongodb.so"
sudo nano /etc/php/7.0/cli/conf.d/30-mongodb.ini
-> add "extension=mongodb.so"
- Test if the mongodb extension is running in your server :
Commandes :
php --ini
安装 DoctrineMongoDBBundle: http ://symfony.com/doc/current/bundles/DoctrineMongoDBBundle/index.html,http : //www.doctrine-project.org/2016/06/09/odm-1-1-0-and -1-0-6.html ,
Commandes :
- cd
- cd my_project_name
- ls -a composer*
-> résultat : composer.json composer.lock
- sudo nano composer.json
- Add to the composer.json in "require" array
"doctrine/mongodb-odm": "^1.0",
"doctrine/mongodb-odm-bundle": "^3.0"
- Add to the composer.json in "require" array
"alcaeus/mongo-php-adapter": "^1.0",
"ext-mongo": "*"
- Add a new array :
"provide":
{
"ext-mongo": "1.6.12"
}
- Move
sudo cp -i /usr/lib/php/20151012/mongodb.so /etc/php/7.0/cli
为了提供解决方案,我需要至少 10 个声望才能发布...
这在 Ubuntu for PHP7 上对我有用:
sudo apt-get install php7.0-mongodb
我在 ubuntu 16.04 上使用 php 7.0 版。我正在提供有关安装 mongo 驱动程序/客户端的详细信息。首先,我手动安装了 mongodb,然后为它安装了 mongodb-php 驱动程序。
1) 安装 mongo 数据库。输入以下命令:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
为了正确启动Mongdb作为服务,即在系统启动时自动启动Mongodb,请按照以下步骤操作:
通过输入以下命令在 /etc/systemd/system/ 中创建文件 mongodb.service:
$ sudo nano /etc/systemd/system/mongodb.service
在其中粘贴以下内容:
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
然后输入以下命令:
$ sudo systemctl start mongodb
$ sudo systemctl enable mongodb
2)安装mongo-php驱动:
$ sudo pecl install mongodb
此外,您可能会收到错误:找不到 phpize。Phpize 是一个用于创建构建环境的命令。此错误可能出现在安装任何 pecl 扩展时。要解决找不到 phpize 命令的问题,用户必须安装 php5-dev 包。要安装它,请输入命令:
$ sudo apt-get install php7.0-dev
然后在 /etc/php/7.0/apache2 目录下的 php.ini 文件中,添加 mongo db 扩展名:
$ sudo nano /etc/php/7.0/apache2/php.ini
在文件中添加以下行:
扩展 = mongo.so;
(您可能需要指定文件的确切位置。在我的情况下,该文件位于 /usr/lib/php/20151012/mongodb.so 中。)
因此,mongo db 与其驱动程序一起安装。
3) 现在请记住,mongo-php 类已更改。网络中的大多数可用资源都使用已被取代的旧类提供解决方案。以下是您可以参考的链接:
http://php.net/manual/en/set.mongodb.php
http://zetcode.com/db/mongodbphp/
以下是一些基本数据库操作的命令:
$mng = new MongoDB\Driver\Manager(); // Driver Object created
要将数据插入数据库:
$bulk = new MongoDB\Driver\BulkWrite;
$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];
$bulk->insert($doc);
$mng->executeBulkWrite('dbName.collectionName', $bulk);
对于获取数据:
$query = new MongoDB\Driver\Query([]);
$rows = $mng->executeQuery("dbName.collectionName", $query);
foreach ($rows as $row)
{
echo "$row->data - $row->info\n";
}