【发布时间】: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 => /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
我找不到任何提示我安装错误或配置错误的信息。我在过去两个小时内使用pecl 和pear(sudo pear install -f pecl/mongo 和sudo 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>&1 | grep 20121212 -
@user3584460 感谢您的回复。权限基本相同(664 而不是 644),但我将它们更改为完全相同,没有问题。至于第二部分,似乎没有问题,因为当我自己运行它时它可以工作。我认为我让这个问题有点令人困惑,因为我没有说明这是 Apache(用户 www-data)运行 PHP 时的问题,而不是我运行时的问题。
标签: php linux apache mongodb apache2