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
我没能找到任何表明我安装错误或配置错误的信息。我在过去两个小时内使用 pecl
和 pear
(sudo pear install -f pecl/mongo
和 sudo 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
的帮助下
我有一个使用 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 是有效的。可能与用户 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
的帮助下