Composerでライブラリをインストールするときに調べたこと(PEARとPECLの違い)

PHPのライブラリ依存管理ツールの「Composer」について調べました。
Composerの基礎知識
PHPのライブラリをインストールする際に使うライブラリ依存管理ツールのComposerについて調べました。

Composerは、PHPを使った現場で良く使っているのでしっかり理解しました。
あとPEARとPECLについても調べました。
- Composerとは
- Composerの特徴
- Composerのインストール方法
- ComposerとPEARやPECLとの違い
では、まずはComposerについて調べます。
Composerとは
Composerとは、PHP向けのソフトウェアで必要なライブラリの依存関係を管理するパッケージ管理システムです。

node.jsだとnpmなどのパッケージ管理システムがあります。
簡単に説明すると、ライブラリとそれに必要なライブラリをサクッと自動でインストール出来る便利なツールです。
では、Compoerの特徴について紹介します。
ライブラリの依存関係を解決してくれる
Composerを利用する最大の利点であるライブラリの依存関係を解決してくれる点です。
ライブラリを利用するために必要な環境(ライブラリや環境設定など)の関係性です。
- 依存関係の例
- ライブラリAをインストールしようとします。
- すると、ライブラリAにはライブラリBが必要とエラーとなりインストールに失敗します。
- このような「ライブラリAはライブラリBに依存している」関係です。
つまりComposerでライブラリをインストールすると依存関係があるライブラリも一緒にインストールしてくれます。
しかもコマンド1発です!
$ composer require ライブラリA
PHP7.4からPEARがデフォルトでインストールされなくなった
PHP7.4からPEARがデフォルトでインストールされなくなりました。なので、これからはComposerを積極的に利用することをおすすめします。

これからはPEARやPECLよりComposerを使う方がよさそうです!
Composerを使った流れ
Composerを使った簡単な流れを紹介します。
ステップ1:composer.jsonを用意
ますはcomposer.jsonというJSONファイルを作成します。
{
"require": {
"monolog/monolog": "1.0.*"
}
}
composer.jsonとは
composer.jsonには利用するパッケージ(ライブラリ)を定義します。定義したパッケージがComposer によって管理されることになります。
ステップ2:Composerでインストール
composer.jsonで定義したパッケージをComposerでインストールします。
$ composer install
すると、vendorフォルダが出来上がります。
ステップ3:vendorが出来る
vendorというフォルダの中には、composer.jsonで定義したパッケージがダウンロードされ格納されます。
./
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
└── monolog
ステップ4:autoload.phpを読み込む
vendorフォルダの直下には、autoload.phpというファイルも生成されます。
require_once("vendor/autoload.php");
autoload.phpとは
autoload.phpを読み込むことでcomposer.jsonで定義したパッケージを利用することができます。
Composerのインストール方法
では、Composerをインストールします。
公式のComposerサイトの「Download Composer Latest: v1.10.9」を見ながらやります。
ステップ1:composer-setup.phpを取得
公式composerサイトよりcomposer-setup.phpを取得します。
(自分は/tmpへ移動して/tmpへcomposer-setup.phpを配置しました。)
ここでセキュリティ的な注意です!
ドキュメントルートへcomposer-setup.phpを配置しないよう注意しましょう!
$ cd /tmp
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
一応ちゃんとcomposer-setup.phpを取得できたか確認します。
$ ls -la | grep composer
-rw-rw-r-- 1 user user 277509 7月 24 16:40 composer-setup.php
取得したcomposer-setup.phpが壊れていないか確認します。
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
実行後に「Installer corrupt」と表示された場合
ハッシュ値が違っているためと思われます。なので、公式のComposerサイトの「Download Composer Latest: v1.10.9」を確認して正しいハッシュ値で実行してみて下さい。
ステップ2:composer-setup.phpをPHPで実行してcomposer.pharを作成
composer-setup.phpをPHPで実行します。
※もしPHPが複数入っている環境だった場合は、対象のPHPでcomposer-setup.phpを実行してください!
$ php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 1.10.9) successfully installed to: /tmp/composer.phar
Use it: php composer.phar
一応composer.pharができていることを確認します。
$ ls -la | grep composer
-rw-rw-r-- 1 user user 277509 7月 24 16:40 composer-setup.php
-rwxr-xr-x 1 user user 1980987 7月 24 16:46 composer.phar
composer-setup.phpは不要なので、削除します。
$ php -r "unlink('composer-setup.php');"
一応削除できたか確認します。
$ ls -la | grep composer
-rwxr-xr-x 1 user user 1980987 7月 24 16:46 composer.phar
ステップ3:Composerの動作確認
composer.pharの動作確認をします。
$ ./composer.phar -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.9 2020-07-16 12:57:00
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
(以下略)
ステップ4:Composerコマンドをどこからでも利用できるように
/usr/local/binフォルダへcomposer.pharを移動させて、どこからでも実行できるようにします。
(/usr配下へファイルを配置するにはrootユーザーの権限が必要となります)
一般的には自作のスクリプトなどを配置しておくことディレクトリです。
参照:「/bin」「/usr/bin」「/usr/local/bin」ディレクトリの使い分け
$ sudo mv composer.phar /usr/local/bin/composer
$ ls -la /usr/local/bin/ | grep composer
-rwxr-xr-x 1 user user 1980987 7月 24 16:46 composer
動作確認をします。
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.9 2020-07-16 12:57:00
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
ComposerがPEARとPECLの違う点について
Composerについてある程度理解できました。
そこで昔からあるPHPのライブラリをインストールする際に使っていたPEARやPECLとComposerは何が違うのか気になったので調べます。

PEARとPECLとComposerの違いが気になる人だけ読んで欲しい内容になります。
参考:[PHP]pecl,phpize,extensionという単語を見て頭痛がするあなたへの処方箋
PHPでライブラリをインストールする方法
PHPでライブラリをインストールする方法は、大きく分けると「Composer」「PECL」「PEAR」があります。
ツール | ライブラリの種類 | 配布先 |
Composer | PHPで書かれたライブラリ | Packagist (https://packagist.org/) |
PECL | C言語で書かれたライブラリ | PECL (https://pecl.php.net/) |
PEAR | PHPで書かれたライブラリ | PEAR (https://pear.php.net/) |
PECLについて
PECL(ピクル/ペクル:PHP Extension Community Library)とは、PHPで利用できる拡張ライブラリ(パッケージ)を提供しているサービスです。
PECL is a repository for PHP Extensions, providing a directory of all known extensions and hosting facilities for downloading and development of PHP extensions.
PECLはPHP拡張機能のリポジトリであり、既知のすべての拡張機能のディレクトリと、PHP拡張機能のダウンロードと開発のためのホスティング機能を提供します。The packaging and distribution system used by PECL is shared with its sister, PEAR.
https://pecl.php.net/
PECLが使用するパッケージングおよび配布システムは、姉妹のPEARと共有されています。
簡単に言うと、PHPエクステンションを配布するWebサイトおよびツールの名前であり、コマンド名でもあります。
PECLの特徴と補足知識
PECLで提供されるライブラリは、C言語で書かれています。
なので高速に動作します。
ただPECLのライブラリは、PHP内部の処理に依存することがあるのでPHPのアップデート時に注意が必要です。
PECLコマンドは内部的にPEARライブラリを使っています。
PEARについて
PEAR(PHP Extension and Application Repository)とは、PHPで利用する事ができるライブラリ(パッケージ)を提供しているサービスです。
PEAR is a framework and distribution system for reusable PHP components.
https://pear.php.net/
PEARは、再利用可能なPHPコンポーネント用のフレームワークおよび配布システムです。
PEARの特徴と補足知識
PEARが提供しているライブラリは、PECLと違いPHPで書かれています。
なのでPECLより速度は劣ります。
PEARのインストールには、–with-pearで明示的にPEARを有効にしなければなりません。
ただし、このオプションは非推奨であり、将来削除される可能性があります。
まとめ【Composerって何?!PHPのライブラリをインストールするのにPEARやPECLは古い?】
PHPのライブラリをインストールで利用するComposerについて解説しました。
- Composerは、パッケージ管理
- Composerでライブラリをインストールするとライブラリ依存関係も解説される
簡単にPEARとPECLについても解説しました。
- PHPのパッケージ管理には「PEAR」と「PECL」がある
- PHP7.4からPEARがデフォルトでインストールされなくなった

これからはPEARやPECLよりComposerを使う方がよさそうです!
Composerを使った例
Composerを使ってCakePHP4系をインストールし環境構築した手順を紹介しています。
参照:CakePHP4.xをComposerでインストールしてNginxを設定する
最後まで読んでもらいありがとうございます。
PHPの環境構築は「ググってとりあえず動けばOK」という感じだったので
- PHP-fpmとは
- FastCGIとは
- PHPのCGI版とは
- PHP-fpmとNginxの連携について
などPHP-fpmの仕組みを理解するために調べてまとめました。
ディスカッション
コメント一覧
まだ、コメントがありません