我非常渴望开始使用PHP 7但是有一个问题正在阻碍...我主要使用MongoDB作为数据库,问题是我不知道如何安装MongoDB驱动程序/客户端对于PHP 7。
我当前的安装是PHP 5.6,在我的Mac上,brew install php56-mongo
可以解决问题。
有人可以推荐我如何在我的Mac或Ubuntu上安装它?
提前致谢,非常感谢!
答案 0 :(得分:39)
PHP版 5.99.99或更早版的Mongo扩展程序已被取代:
https://pecl.php.net/package/mongo
使用较新版本的PHP版本 7.99.99 或更早版本:
https://pecl.php.net/package/mongodb
您可以安装PECL / PEAR分机automatically:
pecl install mongodb
或 manually。
类也已更改:
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
答案 1 :(得分:12)
支持PHP 7的MongoDB驱动程序仅为released December 22nd - 它可能是下游存储库,例如brew haven&t更新。
更新确认当前没有php70-mongo
brew脚本,但有一个有效pull request来添加。
在此期间您可以install it manually via pecl:
pecl channel-update pecl.php.net
pecl install mongodb
echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
答案 2 :(得分:7)
如何在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)将以下内容添加到/etc/php/apache2/7.0
extension=mongodb.so
重要 - 课程也已更改:
new MongoClient(); //Old Class
new MongoDB\Driver\Manager(); // New Class
答案 3 :(得分:6)
您可以尝试使用以下命令安装mongodb驱动程序:
sudo apt-get install php-mongodb
答案 4 :(得分:3)
PHP版本5.99.99或更早版本的MongoDB驱动程序是: https://pecl.php.net/package/mongo 要安装它我们需要使用:
sudo apt-get install php-pear php5-dev
sudo pecl install 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 作曲家命令:
作曲家需要jenssegers / mongodb
如果您正在使用其他没有作曲家的PHP框架,请使用此库:https://github.com/mongodb/mongo-php-library也可在上述库中使用
答案 5 :(得分:2)
不,遗憾的是,旧版驱动程序不支持PHP7。这是正式定稿的the commit和JIRA Ticket。
可以找到新的PHP MongoDB驱动程序in PECL here(或GitHub)。
要安装,只需:
pecl channel-update pecl.php.net
pecl install mongodb
echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
可以找到新驱动程序的文档here。我想在文档中加入一条说明:
最终,此扩展程序不能单独使用。用户应考虑将此驱动程序与一个或多个用户态PHP库一起使用,例如mongo-php-library。
新的mongodb
驱动程序/ PHP扩展程序比旧版mongo
驱动程序更低级,并且建议您在驱动程序之上使用更高级别的库而不是使用它直接在你的代码中。
Mongo PHP Library(releases)是PHP的官方高级库,它是建议在您的项目中使用的。它仍处于测试阶段,但这似乎仍然是PHP7最安全,最具前瞻性的前进道路。
有人可能会将旧驱动程序移植到PHP7,但可能没有太多需要它,因为传统驱动程序还有许多其他问题。
答案 6 :(得分:2)
老问题,但新的优秀解决方案。只需使用Mongostead7自动脚本来安装所有需要的东西。为我工作很好。无需额外的工作。
按如下方式使用:
sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | sudo sh
答案 7 :(得分:2)
补充答案并发布对我有用的内容:
1遵循本指南以安装灯https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04(仅在安装mongo客户端时需要第三步)
2 $ sudo pecl install mongodb
3 $ sudo nano /etc/php/7.0/apache2/php.ini
4 {{1}}
在文件中添加以下行:
extension = mongo.so;
(您可能需要指定文件的确切位置。就我而言 该文件位于/usr/lib/php/20151012/mongodb.so。)
这就是安装php 7.0的mongo客户端
我正在补充Pransh Tiwari的答案
答案 8 :(得分:2)
我也几乎放弃了。对于适用于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);
?>
答案 9 :(得分:1)
这对我在Ubuntu for PHP7上有用:
sudo apt-get install php7.0-mongodb
答案 10 :(得分:1)
UBUNTU 16。4。4(07.12.2016)
安装PHP-MONGODB驱动程序:
Commandes:
- sudo pecl install mongodb
- &GT; résultat:
构建过程成功完成
安装'/usr/lib/php/20151012/mongodb.so'
安装ok:channel://pecl.php.net/mongodb-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个声望发布...
答案 11 :(得分:1)
我在ubuntu 16.04上使用php 7.0版。我正在提供有关安装mongo驱动程序/客户端的详细信息。 首先我手动安装了mongodb,然后是mongodb-php驱动程序。
1)安装mongo db。输入以下命令:
Console (/SUBSYSTEM:CONSOLE)
为了正确启动Mongdb作为服务,即在系统启动时自动启动Mongodb,请按照以下步骤操作:
输入命令在/ etc / systemd / system /中创建文件mongodb.service:
$ 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
将以下内容粘贴到其中:
$ 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
2)安装mongo-php驱动程序:
$ sudo systemctl start mongodb
$ sudo systemctl enable mongodb
此外,您可能会收到错误:找不到phpize。 Phpize是一个用于创建构建环境的命令。在安装任何pecl扩展时可能会出现此错误。为了解决找不到phpize命令的问题,用户必须安装php5-dev软件包。 要安装它,请输入命令:
$ sudo pecl install mongodb
然后在/etc/php/7.0/apache2目录下的php.ini文件中,添加mongo db扩展名:
$ sudo apt-get install php7.0-dev
在文件中添加以下行:
extension = 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/
以下是一些基本数据库操作的命令:
$ sudo nano /etc/php/7.0/apache2/php.ini
将数据插入数据库:
$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);
答案 12 :(得分:0)
如果您正在努力让旧的PHP5代码与PHP7协同工作,那么您可能需要考虑的一个解决方案是https://github.com/alcaeus/mongo-php-adapter
我注意到在大多数情况下,包括适配器库是您需要做的所有事情,以便使用新的驱动程序/库方法在PHP7下正常运行旧的PHP5代码。
然后,我强烈建议您将代码迁移到新的MongoDB PHP库(https://github.com/mongodb/mongo-php-library),或者使用本机驱动程序从速度增益中受益。