在 Ubuntu 13.10 (saucy) 中安装 Mongodb PHP 扩展的最简单方法?

Posted

技术标签:

【中文标题】在 Ubuntu 13.10 (saucy) 中安装 Mongodb PHP 扩展的最简单方法?【英文标题】:Easiest way to install Mongodb PHP extension in Ubuntu 13.10 (saucy)? 【发布时间】:2014-04-22 22:35:44 【问题描述】:

我使用的是 Ubuntu 13.10 (saucy salamander),我希望 sudo apt-get install php5-mongo 足以安装 mongodb 数据库驱动程序。

虽然没有这样的运气。我正在使用 php5-fpm,所以首先我发现我还需要做 php5enmod mongo 但即便如此,我还是会收到一个错误:

include(MongoClient.php): failed to open stream: No such file or directory

相反,要安装,我必须执行以下操作(这会占用更多磁盘空间):

 sudo apt-get install php5-dev make php-pear
 sudo pecl install mongo
 sudo echo "extension=mongo.so" | tee /etc/php5/mods-available/mongo.ini

我的问题是为什么sudo apt-get install php5-mongo 还不够? Ubuntu repo 有问题吗?我如何查看 ubuntu 存储库并找到它使用的版本或为什么不包括 MongoClient.php。我使用“ubuntu:saucy”泊坞窗图像作为我的基础,我认为它默认包含 Universe。

【问题讨论】:

您不必包含 PHP 脚本即可使用 MongoDB。打开phpinfo() 并验证您的模块是否已加载。请记住,不同的 PHP 环境使用不同的php.inis。 (/etc/php5/fpm/php.ini) apt-get 是不够的,因为每个 PHP 设置都不同 另外 php5-mongo 可能是一个非常旧的驱动版本,你应该使用 pecl install mongo 【参考方案1】:

在 Ubuntu 14.04 中,sudo apt-get install php5-mongo 会生成一个完全正常工作的 mongo PHP 扩展。所以我猜只是 Ubuntu 13.10 中的一个打包问题导致了这个问题。

解决方案:使用 Ubuntu 14.04 LTS 而不是 Ubuntu 13.10。

但是,如果您使用 Ubuntu 13.10,请不要使用 php5-mongo Ubuntu 软件包,而是通过 pecl 安装 mongo 扩展:

sudo apt-get install php5-dev make php-pear
sudo pecl install mongo
sudo echo "extension=mongo.so" | sudo tee /etc/php5/mods-available/mongo.ini

【讨论】:

这条线 sudo echo "extension=mongo.so" | tee /etc/php5/mods-available/mongo.ini 对我来说失败了。它说执行tee时权限被拒绝但是我将其更改为sudo echo "extension=mongo.so" | sudo tee /etc/php5/mods-available/mongo.ini 如果你想在 apache 和 cli 中加载这个模块,你需要正确地符号链接它。 ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/mongo.ini 和 apache 的另一个符号链接【参考方案2】:

在 ubuntu 中安装 php5 的 mongoDB 驱动程序最简单的方法是使用以下命令:

sudo apt-get install php5-mongo

注意,驱动已经正确安装但还没有加载,所以如果使用apache应该绝对重启服务器:

sudo service apache2 restart

【讨论】:

谢谢,虽然您的说明适用于今天的 Ubuntu,但它们不适用于 Ubuntu 13.10 (saucy)。【参考方案3】:

还有一个安装 mongo DB for PHP 的好方法。我有 ubuntu 14.04LTS。

open synaptic package manager and search "mongo"

选择这些软件包进行安装。

php-horde-mongo php-mongo

单击应用安装软件包。

现在使用这个命令重启你的 apache2。

sudo service apache2 restart

测试 mongo

创建名为 mongo-test.php 的 PHP 文件并将此代码粘贴到那里。

<?php
   // connect to mongodb
   $m = new MongoClient();

   echo "Connection to database successfully";
   // select a database
   $db = $m->mydb;

   echo "Database mydb selected";
?>

测试这个网址http://localhost/mongo-test.php

【讨论】:

在 Ubuntu 15.04 上,我使用软件中心找到了 php-horde-mongo 和 php5-mongo。安装后,我重新启动了 Apache。它工作得很好。也感谢您提供测试代码:) 欢迎。 Synaptic 和软件中心使用相同的软件包存储库。 Synaptic 是更高级的工具,而软件中心则简单易用。【参考方案4】:

这似乎是 Ubuntu 中的打包问题。

您是否也通过apt-get 安装了PHP5-fpm?您安装 PHP5 的方式与 php5-mongo 包尝试更新的 php.ini 文件之间似乎存在脱节。

至于include(MongoClient.php): failed to open stream错误;这是因为你的自动加载器。 当您在未启用扩展程序时执行new MongoClient 时,它会触发您的自动加载,它会尝试包含一个名为&lt;classname&gt;.php 的文件

【讨论】:

以上是关于在 Ubuntu 13.10 (saucy) 中安装 Mongodb PHP 扩展的最简单方法?的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu13.10 服务器中安装 Munin(监视工具)

ubuntu 13.10 中的 ns2 allinone 安装错误

Ubuntu apt-get 无法获取软件包 [关闭]

如何在 Ubuntu 13.10 上安装 Graphite?

如何在 ubuntu 13.10 中创建虚拟主机

Ubuntu 服务器 13.10 上的 ZPanel