我有一个使用Apache的站点,它只是以下代码:
<?php $m = new MongoClient(); ?>
当我尝试访问它时,我在error.log中收到错误
`PHP Fatal Error: Class 'MongoClient' not found`
以下是可能出错的设置,但我认为不是。
php -i | grep 'Configuration'
=&gt; Configuration File (php.ini) Path => /etc/php5/cli | Loaded Configuration File => /etc/php5/cli/php.ini
grep 'mongo' /etc/php5/cli/php.ini
=&gt; extension=mongo.so
php -i | grep 'extension'
=&gt;
extension_dir => /usr/lib/php5/20121212 => /usr/lib/php5/20121212
ls /usr/lib/php5/20121212/ | grep 'mongo.so'
=&gt; 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是有效的。也许它与用户权限/用户安装问题有关?
答案 0 :(得分:5)
问题在于我使用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文件后,模块在启动时加载,所以我重新启动,现在一切正常。
答案 1 :(得分:1)