it-swarm.com.de

PHP Schwerwiegender Fehler: Klasse 'MongoClient' nicht gefunden

Ich habe eine Site mit Apache, die nur den folgenden Code enthält:

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

und wenn ich versuche, darauf zuzugreifen, erhalte ich den Fehler in error.log

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

Die folgenden Einstellungen sind möglicherweise falsch, aber ich glaube nicht.

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

Ich konnte nichts finden, was darauf hindeutet, dass ich es falsch installiert oder falsch konfiguriert habe. Ich habe es in den letzten zwei Stunden mit pecl und pear (Sudo pear install -f pecl/mongo und Sudo pecl install mongo) installiert.

Ich habe Apache und sogar meinen Computer mehrmals neu gestartet.

Warum erhalte ich den Fehler Class 'MongoClient' not found?

Ich bin auf Ubuntu. PHP Version 5.5.

Bearbeiten: Ich habe gerade festgestellt, dass MongoClient gültig ist, wenn ich PHP im interaktiven Modus ausführe. Möglicherweise hat es mit einem Benutzererlaubnis-/Benutzerinstallationsproblem zu tun?

6
River Tam

Das Problem war, dass ich php -i | grep 'Configuration' verwendet habe, um die INI-Datei zu finden. Dies führte zu /etc/php5/cli/php.ini. Rückblickend sollte dies ein offensichtliches Werbegeschenk sein: cli bedeutet Befehlszeilenschnittstelle, im Grunde genommen für den Interpreter. Was ich brauchte, war die INI-Datei, die Apache verwendete.

Leider gab es keine gute Möglichkeit, dies zu tun, da ich mich nicht beim Benutzer www-data anmelden konnte, sondern eine Datei mit dem Code erstellte

<?php
  phpinfo();
?>

und das ergab, dass der .ini-Dateispeicherort tatsächlich /etc/php5/Apache2/php.ini war.

Nachdem ich die Datei that ini mit extension=mongo.so aktualisiert hatte, wurde das Modul beim Start geladen, sodass ich neu gestartet habe und jetzt alles funktioniert.

5
River Tam

ich habe es in der folgenden Reihenfolge gemacht

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

und mithilfe der folgenden URL

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

1
Junaid Ali