it-roy-ru.com

PHP Неустранимая ошибка: класс 'MongoClient' не найден

У меня есть сайт, использующий 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. 

Правка: я только что обнаружил, что MongoClient действует, когда я запускаю php в интерактивном режиме. Возможно, это связано с разрешением пользователя/проблемой установки пользователя?

6
River Tam

Проблема заключалась в том, что я использовал php -i | grep 'Configuration', чтобы найти файл .ini. Это приводит к /etc/php5/cli/php.ini. Оглядываясь назад, это должно было быть очевидной неожиданностью: cli означает интерфейс командной строки, в основном для интерпретатора. Мне нужен был INI-файл, который использовал Apache.

К сожалению, не было никакого замечательного способа сделать это, так как я не мог войти в систему для пользователя www-data, но я создал файл с кодом

<?php
  phpinfo();
?>

и это показало, что местоположение файла .ini было на самом деле /etc/php5/Apache2/php.ini.

Как только я обновил тот INI-файл с помощью extension=mongo.so, модуль был загружен при запуске, поэтому я перезапустил и все работает сейчас.

5
River Tam

я сделал это, используя следующую последовательность

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

1
Junaid Ali