PHP Fatal Error: Class 'MongoClient' not found

PHP Fatal Error: Class 'MongoClient' not found

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

<?php $m = new MongoClient(); ?>

当我尝试访问它时,我在 error.log

中收到错误
`PHP Fatal Error: Class 'MongoClient' not found`

以下设置可能有误,但我认为没有。

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

我没能找到任何表明我安装错误或配置错误的信息。我在过去两个小时内使用 peclpearsudo pear install -f pecl/mongosudo pecl install mongo

安装了它

我已经多次重启我的 Apache 甚至我的电脑。

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

我在 Ubuntu。 PHP 版本 5.5。

编辑:我刚刚发现当我在交互模式下 运行 php 时 MongoClient 是有效的。可能与用户 permission/user 安装问题有关?

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

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

的文件
<?php
  phpinfo();
?>

这表明 .ini 文件位置实际上是 /etc/php5/apache2/php.ini

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

我已经按照以下顺序完成了

sudo apt-get install mongodb

sudo service mongodb start

mongo

sudo pecl install mongo

cd /build/buildd/php5-5.5.9+dfsg/pear-build-download

sudo tar zxvf mongo-1.6.8.tgz

cd mongo-1.6.8

sudo phpize

cd ./configure

sudo make install

sudo gedit /etc/php5/apache2/php.ini

add extension=mongo.ini inphp.ini

sudo gedit/etc/php5/apache2/conf.d/mongodb.ini

add extension=mongo.so

sudo service apache2 restart

并在以下 url

的帮助下

http://www.w3resource.com/mongodb/install-php-driver.php