【问题标题】:PHP Fatal Error: Class 'MongoClient' not foundPHP 致命错误:找不到类“MongoClient”
【发布时间】:2015-04-04 22:35:53
【问题描述】:

我有一个使用 Apache 的网站,代码如下:

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

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

`PHP Fatal Error: Class 'MongoClient' not found`

以下设置可能是错误的,但我认为不是。

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

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

php -i | grep 'extension' => extension_dir =&gt; /usr/lib/php5/20121212 =&gt; /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 是有效的。也许它与用户权限/用户安装问题有关?

【问题讨论】:

  • 那个问题是使用 XAMPP,我不是,解决方案最终成为指定 .dll 的问题,而我在 Linux 上。此外,我的问题中解决了唯一答案提出的所有问题。
  • 检查/usr/lib/php5/20121212/mongo.so的权限 - 它们应该与目录中其他文件的权限相同。您也可以运行strace 来查看php 尝试打开mongo.so 时究竟发生了什么故障。例如。 strace -f php test.php 2&gt;&amp;1 | grep 20121212
  • @user3584460 感谢您的回复。权限基本相同(664 而不是 644),但我将它们更改为完全相同,没有问题。至于第二部分,似乎没有问题,因为当我自己运行它时它可以工作。我认为我让这个问题有点令人困惑,因为我没有说明这是 Apache(用户 www-data)运行 PHP 时的问题,而不是我运行时的问题。

标签: php linux apache mongodb apache2


【解决方案1】:

问题是我使用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 文件,模块在启动时已加载,所以我重新启动,现在一切正常。

【讨论】:

  • 这是 100% 正确的。对我来说是:“/etc/php5/fpm/php.ini”
【解决方案2】:

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

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

并通过以下网址的帮助

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

【讨论】:

  • 这看起来您正在执行两次安装。 1)使用“sudo pecl install mongo”。 2)使用“配置,安装”。其次,为什么要先把php.ini中的扩展链接到mongodb.ini,然后再添加扩展呢?
猜你喜欢
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2015-03-20
  • 2022-01-02
  • 2013-09-27
  • 2013-08-16
  • 2016-08-21
相关资源
最近更新 更多