Extensionは避けては通れないテーマです。ひとつひとつの仕組みの裏側を理解すれば怖いことはありませんので、いちど根っこから掘り下げて勉強しておきましょう。2つに分断されたPHPの世界PHPの世界では、ライブラリ配布方式が2つの世界に分断されてしまっています。pecl後者の「C言語で書かれたライブラリ」のことを「エクステンション」といいます。実体は拡張子.soファイルです。php.iniの末尾に”extension=memcached.so”とか書くときのアレです。Packagist/Composerまわりは話題も豊富で解説記事も多くありますが、extension/peclまわりはちゃんと解説しているサイトが少ないです。PECLとは何か?PECLはPHPエクステンションのためのレポジトリです。PECLはエクステンションの一欄を提供し、エクステンションを開発したりダウンロードしたりする場所を提供します。PECLのパッケージングと配布システムはPEARと共通のものが使われています。「PECLとはPHPエクステンションを配布するWebサイトの名前であり、パッケージングシステムの名前であり、コマンドの名前でもある」と理解するのがよいでしょう。PEARはオワコンって聞いたけど?「PHPアプリケーションから呼び出すライブラリ」という意味では、確かにPEAR方式のライブラリはもうほとんど使われていません。あなたがpeclコマンドを使うとき、裏側でPEAR.phpが動いています。実際、あなたのシステムにあるPEAR.phpを削除するとpeclコマンドが動かなくまります。50これはpeclコマンドが内部的にpearcmd.phpというファイルを呼び出していて、pearcmd.phpがPEAR.phpに依存しているからです。peclコマンドは内部的にPEARライブラリを使っているPECLのパッケージ配布の仕組みはPEARのそれとほぼ同じものである。installの目的を一言で言うと、「*.soファイルを生成して所定の場所(extension_dir)に置くこと」です。extension_dirで調べられます。hogeしたとき、大まかには次のようなことが行われています。上記手順はもちろんひとつづつ手動でやることもできます。逆に、手動でビルドするならpeclコマンドは不要です。installしたらエラーが出てビルドできなかったGithub上ではそのエクステンションが修正されているのに、まだPECLレポジトリでは提供されていないみたいなときです。実際、現時点でPHP7用のmemcachedエクステンションがそんな感じです。エクステンションを手動でビルドしてみる例として、PHP7用のmemcachedエクステンションをビルドする方法を紹介します。手動ビルドなのでpeclコマンドは使いません。libmemcached-develですが、これはエクステンションmemcachedが別のC言語製ライブラリ(libmemcached)に依存しているので、それをインストールしています。memcachedエクステンションのソースコードを取得しています。いうリンクがあるのでそれで知ります。つぎにphpizeというコマンドを叩いています。これはconfigureスクリプトを生成するツールであると理解しておけばよいです。あとは、普通のC言語製ソフトウェアをビルド・インストールするのと同じ手順です。extension_dirにコピーしてるだけです。システム内に複数のPHPがあるとき同じホスト内に複数のバージョンのPHPがあるとき、上記方法だとどっちのextension_dirに入るのか?問題が出てきます。その場合は、configureするときに下記のようにphp-configコマンドを指定してあげればよいです。php-configの関係について解説しました。便利コマンドに頼らず一度は自力でビルドしてみるといいよ。あなたがWebエンジニアでも、makeまわりの知識はあったほうがいいよ。Extensionをインストールする試みもあるそうですが、まだまだ先は長そうです。