PHP致命错误:找不到类'MongoClient'

Riv*_*Tam 6 php linux apache apache2 mongodb

我有一个使用Apache的站点,它只是以下代码:

<?php $m = new MongoClient(); ?>
Run Code Online (Sandbox Code Playgroud)

当我尝试访问它时,我在error.log中收到错误

`PHP Fatal Error: Class 'MongoClient' not found`
Run Code Online (Sandbox Code Playgroud)

以下是可能出错的设置,但我认为不是.

php -i | grep 'Configuration' => Configuration File (php.ini) Path => /etc/php5/cli | Loaded Configuration File => /etc/php5/cli/php.ini

grep 'mongo' /etc/php5/cli/php.ini => extension=mongo.so

php -i | grep 'extension' => extension_dir => /usr/lib/php5/20121212 => /usr/lib/php5/20121212

ls /usr/lib/php5/20121212/ | grep 'mongo.so' => mongo.so

我无法找到任何建议我安装错误或错误配置.我使用peclpear(sudo pear install -f pecl/mongosudo pecl install mongo)在过去两小时内安装了它

我多次重启我的Apache甚至我的电脑.

那么为什么我会收到错误Class 'MongoClient' not found

我在Ubuntu上.PHP 5.5版.

编辑:当我在交互模式下运行php时,我刚刚发现MongoClient是有效的.也许它与用户权限/用户安装问题有关?

Riv*_*Tam 5

问题是我php -i | grep 'Configuration'用来查找.ini文件.这导致了/etc/php5/cli/php.ini.回想起来,这应该是一个明显的赠品:cli意味着命令行界面,基本上是解释器.我需要的是Apache正在使用的ini文件.

不幸的是,没有很好的方法可以做到这一点,因为我无法登录www-data用户,但我创建了一个包含代码的文件

<?php
  phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

并且显示.ini文件位置实际上是/etc/php5/apache2/php.ini.

一旦我更新了那个 ini文件extension=mongo.so,模块就在启动时加载了,所以我重新启动了,现在一切正常.