Mongo 不会在启用 error_reporting 的情况下加载 phpinfo
Posted
技术标签:
【中文标题】Mongo 不会在启用 error_reporting 的情况下加载 phpinfo【英文标题】:Mongo will not load in phpinfo with error_reporting enabled 【发布时间】:2013-02-03 15:46:03 【问题描述】:我已经尝试让 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 -m
中,但没有出现在 phpinfo()
中。经过很长时间的搜索,我尝试在php.ini
中评论以下内容:
Default Value: E_ALL & ~E_NOTICE
这会导致 Mongo 出现在我的 phpinfo()
语句中,并且 $m = new MongoClient()
不会引发任何错误。唯一的问题是我需要打开错误报告(因为我是新开发人员)。
仅当启用详细错误报告时,可能导致 Mongo 无法加载的原因是什么?
编辑:还需要注意的是我在单个 PHP 文件中打开了错误报告,它正确显示了任何错误,同时仍然让 Mongo 加载
【问题讨论】:
我对您在 php.ini 中评论Default Value: E_ALL & ~E_NOTICE
的意思有点困惑。这行应该总是被注释掉,因为它是一个注释。它也与Mongo是否会加载无关。
php -m
是命令行,因此您可能在网络服务器下运行 phpinfo()。不同的 .ini 文件,因此可能没有将 mongo 的内容加载到 web 服务器的 php 副本正在查看的任何 .ini(s) 中。 phpinfo() 会告诉你正在加载哪些文件。
由于某种原因,默认情况下我的安装中未注释此值 - 我猜这会在 php.ini 到达扩展行之前停止加载。也许我需要看看我的 php.ini 语法 - 谢谢!
@wcpyro 听起来是个好主意。您可能还想将其恢复为默认值。您可以通过清除 php5
包并重新安装它来做到这一点(或者尝试在 Internet 上的某个位置找到与您的操作系统匹配的默认 php.ini 文件并希望获得最好的结果)。
【参考方案1】:
mongo 扩展很可能没有安装在您的开发/服务器设置中。首先检查是否安装。创建一个名为 phpinfo.php 的文件,内容如下:
从浏览器运行它。搜索蒙哥。看看是什么版本。如果它不存在,请从命令行执行以下操作:
sudo pecl 安装 mongo
如果你有 ubuntu 桌面 sudo gedit /etc/php5/conf.d/mongo.ini
如果你有 ubuntu 服务器 须藤 vi /etc/php5/conf.d/mongo.ini
在文件中插入以下行: extension=mongo.so
保存文件。出口。使用 sudo /etc/init.d/apache2 restart 重启 apache
永远不要直接编辑 php.ini 文件以在 ubuntu 中加载/卸载扩展。在 /etc/php5/conf.d/ 中的文件中进行更改
【讨论】:
以上是关于Mongo 不会在启用 error_reporting 的情况下加载 phpinfo的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB 5.0 复制:Mongo::Error::NoServerAvailable
具有默认值上下文过滤器的 Drupal 7 视图块不会在页面上过滤(Mongo)