Mongo 不会在启用 error_reporting 的情况下加载 phpinfo

Mongo will not load in phpinfo with error_reporting enabled

提问人:sricks 提问时间:2/19/2013 最后编辑:sricks 更新时间:2/19/2013 访问量:2131

问:

几个小时以来,我一直在尝试让 Mongo 在 Ubuntu Server 12.04 上使用 Apache2 在 PHP 5.3 上工作。

它给出了错误:

Fatal error: Class 'MongoClient' not found in /var/www/projects/learn/create.php on line 7

Mongo 出现在 中,但没有出现在 .经过长时间的搜索,我尝试在我的 :php -mphpinfo()php.ini

Default Value: E_ALL & ~E_NOTICE

这会导致 Mongo 出现在我的语句中,并且不会抛出任何错误。唯一的问题是我需要打开错误报告(因为我是新开发人员)。phpinfo()$m = new MongoClient()

是什么可能导致 Mongo 仅在启用详细错误报告时无法加载?

编辑:另外可能注意的是,我在单个PHP文件中打开了错误报告,并正确显示任何错误,同时仍然让Mongo加载

php Apache mongodb ubuntu 报告

评论

0赞 Mike 2/19/2013
我对你在php.ini中发表评论的意思有点困惑。应始终注释掉此行,因为它是注释。这也与 Mongo 是否会加载无关。Default Value: E_ALL & ~E_NOTICE
1赞 Marc B 2/19/2013
php -m是命令行,所以你可能在 Web 服务器下运行了 phpinfo()。不同的.ini文件,所以可能 mongo 的东西没有被加载到 Web 服务器的 php 副本正在查看的任何.ini中。phpinfo() 会确切地告诉你哪些文件正在加载。
0赞 sricks 2/19/2013
出于某种原因,默认情况下,此值在我的安装中未被注释 - 我猜这会在php.ini到达扩展线之前停止加载。也许我需要看看我的php.ini语法 - 谢谢!
0赞 Mike 2/19/2013
@wcpyro听起来是个好主意。您可能还想将其恢复为默认值。您可以通过清除软件包并重新安装它(或尝试在 Internet 上的某个地方找到与您的操作系统匹配的默认php.ini文件并希望得到最好的结果)来做到这一点。php5

答:

2赞 priyolahiri 2/19/2013 #1

在很可能没有在您的开发/服务器设置中安装 mongo 扩展。首先检查是否安装。创建一个名为 phpinfo.php 的文件,其中包含以下内容:

从浏览器运行它。搜索 MONGO。看看版本是什么。如果不存在,请从命令行执行以下操作:

sudo pecl 安装 mongo

如果您有 Ubuntu 桌面 sudo gedit /etc/php5/conf.d/mongo.ini

如果您有 Ubuntu 服务器 sudo vi /etc/php5/conf.d/mongo.ini

在文件中插入以下行: 扩展名=mongo.so

保存文件。退出。使用 sudo /etc/init.d/apache2 restart 重新启动 Apache

切勿直接编辑 php.ini 文件以在 Ubuntu 中加载/卸载扩展。在 /etc/php5/conf.d/ 的文件中进行更改