MongoDBとLaravelを統合しています。このリンクにある情報をフォローしています jenssegers/laravel-mongodb 。 MongoDBの統合に成功しています。しかし、コードを実行すると、このエラーがスローされます
Client.php行56のFatalErrorException:クラス 'MongoDB\Driver\Manager'が見つかりません
ここにコードがあります
Controllerapp/Http/Controller/NewController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
class NewController extends Controller
{
//
public function index(){
$var = User::all();
var_dump($var);
}
}
そして、user.php
これは、デフォルトでLaravelプロジェクトの作成時に提供されます
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class User extends Eloquent
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $collection = 'users_collection';
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
このエラーが発生する理由を教えてください。
Phpinfo-> mongodbセクションが近づいています。これがスクリーンショットです phpinfo
それが最もエレガントなソリューションであるかどうかはわかりませんが、私にとってはうまくいきました:
$ Sudo pecl install mongodb
$ Sudo nano /etc/php5/mods-available/mongodb.ini
そして内部に書き込みます:extension = mongodb.so$ Sudo ln -sv /etc/php5/mods-available/mongodb.ini /etc/php5/Apache2/conf.d/20-mongodb.ini
$ Sudo ln -sv /etc/php5/mods-available/mongodb.ini /etc/php5/cli/conf.d/20-mongodb.ini
$ Sudo service Apache2 restart
Jenssegers/mongodbの再インストールが必要になる場合があります:$ composer require jenssegers/mongodb
また、ubuntu/debianでfpmを再起動する必要がある場合があります
Sudo service php7.0-fpm restart
php5の
Sudo service php5-fpm restart
また、extension=mongodb.so
は次のとおりです。
Apache2/php.ini
cli/php.ini
fpm/php.ini
確認するには:
locate php.ini | xargs grep mongo
php.iniファイルを表示するには:
php --ini
2017年の時点で、これはPHP 5.6:
### Install MongoDB driver for PHP 5.6 ##############
echo -e "\n### Installing MongoDB PHP driver ##\n";
Sudo apt-get install php-mongodb -y
# Make sure extension=mongodb.so is present
PhpConfigFile="/etc/php/5.6/fpm/php.ini"
if grep -q mongodb.so "$PhpConfigFile"; then
echo "extension=mongodb.so already found, dont add."
else
echo "extension=mongodb.so" | Sudo tee "$PhpConfigFile"
echo "Added extension=mongodb.so to $PhpConfigFile"
fi
PHP5.6 + nginx + MongoDB plugin for PHPのワンライナーインストーラーの一部であり、そのためのドメインも作成しました。 http://ubuntu-script.tk
MongoDBデータベースをPHPアプリケーションと接続する場合、PHP MongoDBドライバーがない場合、この問題に直面する可能性があります。
したがって、まずMongodb PHP extensionをインストールするために次のコマンドを実行する必要があります。
Sudo apt-get install php-mongodb
サーバーを再起動します。
Sudo service Apache2 restart
たぶんそれはあなたを助けるかもしれません。
新しいWampサーバーを使用している場合は、同じwampで使用し、mongodb.dllをインストールした場所で、ideが使用しているphpインタープリターを確認してください。
私は同じ問題を抱えていました。
私のwampサーバーには2つのバージョンがあるため、php 5.6.25と7.0.10の両方にmongodb.dllをインストールしたときに解決しました。インストール後、composer= update。を行いました。これで問題ありません。
どのプロセスであっても、php-mongodbが正しくインストールされていると仮定します。
Mongo接続文字列が空のときにこのエラーが発生しました。
new MongoDB\Client('mongodb://');
Mongo接続文字列が適切に入力されていることを確認してください。
答えはここにあります: なぜMongoDBクラスがLaravelで動作しないのですか?
apokryfos は、最初のコメントで答えを示します。
代わりに新しい\ MongoClient()を試してください
PHPで機能するmongodb.so拡張機能を取得するのに苦労している人のために、PHPには2つのmongoドライバーがあることに注意してください。新しいドライバーについては、次の指示に従ってください。 http://php.net/manual/en/mongodb.installation.manual.php
すべてのphp.iniファイルに以下が含まれていることを確認してください。
extension=mongodb.so
プロジェクトのルートから:
composer require mongodb/mongodb
PHPファイル:
MongoDBの前にバックスラッシュに注意してください
$client = new \MongoDB\Client("mongodb://127.0.0.1:27017");
$collection = $client->database->collection;
$cursor = $collection->find(
[
'some.Nice.name' => 'true'
]
);