Help us understand the problem. What is going on with this article?

FuelPHP 1.7でMongo_Db::__construct()の挙動が変わった

More than 5 years have passed since last update.

\Fuel\Core\Mongo_Dbが依存するPECL::Package::mongoの1.5以上はインスタンス作成時の new \Mongo() がなくなっています。

* [PHP-818] - Deprecate "Mongo" in favour of MongoClient.

インスタンス生成時は new \MongoClient() に変更しろということですかね。

この変更はFuelPHP 1.7で取り込まれています。
多くの人はまったく気にすることはないと思いますが、FuelPHP 1.6をメンテナンスするときにちょこっと厄介。例えば、Homebrew(他のパッケージ管理ツールでも同様だと思う)でお気楽に環境を整えてしまおうとするとPECL::Package::mongoの最新が入ってしまう可能性があります。FuelPHP 1.6の\Fuel\Core\Mongo_Db::__construct()は

// Let's give this a go
try
{
    $this->connection = new \Mongo(trim($connection_string), $options);
    $this->db = $this->connection->{$config['database']};
    return $this;
}
catch (\MongoConnectionException $e)
{
    throw new \Mongo_DbException("Unable to connect to MongoDB: {$e->getMessage()}");
}

こうなっていて、最新のPECL::Package::mongoが期待する new \MongoClient() ではありません。なので、

Fuel\Core\PhpErrorException [ 8192 ]: Fuel\Core\Mongo_Db::__construct(): The Mongo class is deprecated, please use the MongoClient class

こんなエラーが発生してしまいます。

ということでPECL::Package::mongoはパッケージ管理ツールに頼らずに、pecl コマンドで古いバージョンをインストールしましょう。

sudo pecl install mongo-1.4.5

こうするとバージョン 1.4.5 のPECL::Package::mongoがインストールされます。

これでFuelPHP 1.6のMongo_Dbも大丈夫。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away