php -m コマンド情報まとめ
ターミナルの php -m コマンドについて、基本的な使い方から特定のモジュールを確認する応用方法、php -i との違いなどを紹介しています。
php -mとは
php -m(ピーエイチピー マイナスエム)は、現在動作しているPHP環境にインストールされ、有効化されている「拡張モジュール(Extension)」の一覧をコマンドライン上にリスト表示するコマンドです。
WordPressの動作に必要なライブラリがサーバーに導入されているか確認したり、プログラムの動作要件を満たしているかを検証したりする際に頻繁に用いられます。
主要オプションの意味と関連引数
| コマンド・オプション | 意味 |
|---|---|
php -m | 有効化されているすべてのPHP拡張モジュール(コアモジュール含む)をアルファベット順で一覧表示する |
php -i | PHP設定情報(phpinfoの内容)をテキスト形式で詳細に出力する(モジュールの詳細設定も含む) |
php --ini | 適用されている設定ファイル(php.ini)のパスや追加スキャン用ディレクトリの場所を表示する |
php -m は非常に軽量なコマンドであり、単純に「モジュールがロードされているか否か」だけを素早く確認したい場合に最も適しています。
よく使う組み合わせ
有効なモジュールの一覧を表示する
php -m
システムで有効になっているモジュール名が改行区切りでずらりと出力されます。
[PHP Modules] および [Zend Modules] のセクションに分かれて表示されます。
特定のモジュールが有効か検索する
php -m | grep gd
出力されたモジュール一覧から grep コマンドを用いて、画像処理ライブラリである gd がロードされているかをピンポイントで検索します。
何も出力されなければ、そのモジュールは無効化されていると判断できます。
WordPressで必須となる複数のモジュールをチェックする
php -m | grep -E "mbstring|curl|pdo_mysql|imagick"
拡張正規表現(-E)を利用して、マルチバイト文字処理用の mbstring や、外部通信用の curl、DB接続用の pdo_mysql など、主要なモジュールが揃っているかを一度に確認します。
php -m vs php -i の違い
どちらもPHPの動作状況を確認するコマンドですが、出力される情報の細かさに違いがあります。
| 項目 | php -m | php -i |
|---|---|---|
| 情報の種類 | ロードされているモジュールの「名前一覧」のみ | 設定値やバージョン情報、ディレクトリ構成など「すべて」 |
| 出力の長さ | 数十行程度(非常にコンパクト) | 数千行に及ぶ(膨大) |
| 主な用途 | 特定の拡張モジュールが存在するかの簡易生存確認 | php.iniの具体的なパラメーター設定値のデバッグ |
モジュールが入っているかどうかの確認だけであれば、余計な情報が出力されない php -m を使用するのがシンプルで効率的です。
ユースケース
画像変換エラー時のモジュール確認
php -m | grep -i imagick
WordPressなどのCMSで「画像のアップロードやWebP変換に失敗する」といった問題が発生した際、画像処理モジュール imagick が有効化されているかを確認するために実行します。
DB接続エラーの原因切り分け
php -m | grep mysqli
データベースへの接続エラーが発生した際、PHPからMySQLに接続するための mysqli ドライバーが正常にロードされているかをチェックします。
AIエージェントが実行しようとした場合
AIエージェントの目的
AIエージェントは主に次のような目的で php -m を実行しようとすることがあります。
- 画像処理やマルチバイト処理を行う前に、必要なPHP拡張機能がロードされているか確認するため
- PHPエラーが発生した際、対象の関数を提供するモジュールが有効化されているかを調査するため
危険性
php -m コマンドは、PHPにロードされているモジュール名の一覧を取得する読み取り専用の操作であり、サーバーの設定を変更したり破壊的な処理を行ったりすることはありません。
そのため、危険性はなく、AIエージェントが実行しても問題ありません。
自動実行の許可設定
このコマンドは情報の取得や閲覧のみを行う安全な操作であるため、AIエージェントの自動実行(許可)設定をオンにしても問題ありません。