我正在运行 Ubuntu 16.04 LTS,我想将 Mongodb 与 PHP 结合使用。为此,我尝试了
sudo apt-get install php5-mongo
这对于 Ubuntu 14.04 LTS 来说已经足够了,但我错了。我收到以下错误消息:
E: Unable to locate package php5-mongo
我刚刚将机器操作系统升级到Ubuntu 16.04 LTS
并且想mongodb
使用PHP 7.0.4
。
那么我该怎么做才能解决这个问题?
答案1
要安装 mongodb 扩展,请执行以下操作:
sudo apt-get install php-mongodb
答案2
我相信你现在已经找到了解决方案。不过我想分享一下我是如何做到的:
- 在 Ubuntu 16 上安装了 php 5.6 (@seehttp://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu)
- 然后跑了
sudo apt-get install php5.6-mongo
答案3
我在 ubuntu 16.04 上使用 php 版本 7.0。我提供了安装 mongo 驱动程序/客户端的详细信息。首先,我手动安装了 mongodb,然后为其安装了 mongodb-php 驱动程序。
1)安装mongo db。输入以下命令:
$ 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";
}
答案4
我在我的 Dockerfile 上使用它:
echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
curl -OL https://www.dotdeb.org/dotdeb.gpg \
&& apt-key add dotdeb.gpg \
&& rm dotdeb.gpg
apt-get update -y \
&& apt-get install -y \
php7.0 \
php7.0-mongodb \