【问题标题】:PHP and MongoDBPHP 和 MongoDB
【发布时间】:2016-08-24 11:58:48
【问题描述】:

我正在尝试通过 PHP 连接到 MongoDB。

mongod --version
db version v3.2.8

那么,

php -i | grep mongo
 /etc/php/7.0/cli/conf.d/20-mongodb.ini,
 mongodb
 mongodb support => enabled
 mongodb version => 1.1.8
 mongodb stability => stable
 libmongoc version => 1.3.5
 mongodb.debug => no value => no value

我试过了:

sudo pecl install mongodb

返回

pecl/mongodb is already installed and is the same as the released version 1.1.8 
install failed

如果我尝试,哪个(安装失败位)会得到纠正:

sudo pecl uninstall mongodb

sudo pecl install mongodb

我有这个 php 文件:

<?php

echo "I am here";
$connection = new Mongo('localhost');
$db = $connection->mydb;

$list = $db->listCollections();
foreach ($list as $collection) {
    echo "$collection </br>";       
}

echo "I am never here";
?>

我看不到第二个回声。

如果有任何想法,我将不胜感激。

谢谢。

【问题讨论】:

  • 第一个 echo phpinfo();看看 mongo 扩展是否存在?如果不存在,则 mongo 未安装成功。
  • @SanjayChaudhari 非常感谢!确实有。有一个 mongodb 部分,其中包含来自 php -i 的信息。
  • @KarthiVenture 谢谢!我之前看过那个帖子。尝试了那里的一切,但无济于事。

标签: php mongodb


【解决方案1】:

首先,检查@sanjay 评论,然后应用此连接:

$db = new MongoClient('mongodb://localhost', [
    'username' => 'root',
    'password' => '',
    'db'       => 'YOUR DB'
]);

希望它对你有用。

【讨论】:

  • 谢谢!我试过了,但我只看到第一个回声。当我从命令行登录 Mongo shell 时,我不使用任何用户名/密码。因此,对于用户名和密码,我只需输入 ''(空白)。
  • 我想知道,mongod 是 3.2.8 而 mongodb 版本(来自 php -i)是 1.1.8 会不会是个问题?
  • 你用的是哪个版本?
  • 抱歉听起来有点乏味,但我不能确定。此外,当我登录到 mongo shell 时,我收到以下消息:“Connecting to: test”,我将其关闭 :) 我很困惑。
  • 请检查此答案stackoverflow.com/a/16769216/3081659。这与您当前的问题有关。
【解决方案2】:

我设法让它工作。感谢这篇文章: After upgrading PHP to version 7, why can't I use the mongodb driver?

还有这篇文章: Using the PHP Library for MongoDB (PHPLIB)

抱歉,这看起来很奇怪(对我来说!),但实际上:MongoClient() 已经变成了(逐字!带有斜线!)MongoDB\Client()。

因此,我在原始帖子中的文件变为:

<?php
require 'vendor/autoload.php';
echo "I am here";

$manager = new MongoDB\Client();

$database = $manager->mydb;


foreach ($database->listCollections() as $databaseInfo) {
    var_dump($databaseInfo);
}
echo "I managed to arrive here";
?>

我可以看到 mydb 的内容以及 2 个回声。 vendor/autoload.php 由

生成
sudo composer require "mongodb/mongodb=^1.0.0"

当我从上面的 php 文件的目录中运行它时。可能不是最好的主意,因为我现在必须解决如何使 autoload.php(以及它附带的所有内容)全局可用。但是,至少,我设法到达了某个地方。

我正在使用:PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS ) 下:Ubuntu 16.04.1 LTS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2017-09-29
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多