【PHP8.x】get_loaded_extensions関数の使い方

作成日: 更新日:

get_loaded_extensions関数は、現在PHP環境にロードされている(読み込まれている)すべての拡張機能の名前を取得する関数です。PHPの拡張機能とは、データベースへの接続(例えばmysqliPDO)、画像処理(例えばGD)、外部APIとの連携など、PHPの標準機能では提供されていない特定の機能を追加するためのモジュールを指します。これらの拡張機能は、通常、php.iniファイルの設定やWebサーバーの構成によってPHP起動時に読み込まれます。

この関数を実行すると、ロード済みの各拡張機能の名前を文字列として含む配列が返されます。これにより、ご自身のPHP環境でどのような追加機能が利用できるのかを一覧で確認することが可能です。例えば、開発中のアプリケーションが特定のデータベース拡張機能に依存している場合、この関数を使ってその拡張機能が正しくロードされているかをプログラムで確認し、もしロードされていなければ適切なエラーメッセージを表示するといった処理に利用できます。

また、この関数はオプションの引数$list_onlyを受け入れます。この引数にtrueを指定すると、PHPの内部モジュールはリストから除外され、外部から追加された拡張機能のみを取得することができます。false(デフォルト値)の場合は、全てのロード済み拡張機能が返されます。この関数は、システムのデバッグ、情報確認、およびアプリケーションの互換性チェックなど、様々な状況で役立つ重要なツールです。

基本的な使い方

構文(syntax)

<?php

$extensions = get_loaded_extensions();
print_r($extensions);

?>

引数(parameters)

?bool $zend_extensions = false

  • bool $zend_extensions = false: trueを指定すると、Zend拡張機能(PHP本体の機能拡張)も取得対象に含めます。デフォルトはfalseで、通常のPHP拡張機能のみを取得します。

戻り値(return)

array

この関数は、現在PHPにロードされているすべての拡張モジュールの名前を文字列の配列として返します。

サンプルコード

PHPのロード済み拡張機能一覧を表示する

<?php

/**
 * 現在ロードされているPHP拡張機能の一覧を表示します。
 * システムエンジニア初心者向けに、各拡張機能の名前を分かりやすくリストアップします。
 */
function displayLoadedPhpExtensions(): void
{
    // get_loaded_extensions() 関数は、PHPにロードされている拡張機能のリストを配列として返します。
    // 引数を指定しない場合(または false を指定した場合)、Zend拡張機能は含まれません。
    $extensions = get_loaded_extensions();

    echo "--- ロードされているPHP拡張機能 ---" . PHP_EOL;

    // 拡張機能がロードされているか確認します。
    if (empty($extensions)) {
        echo "ロードされているPHP拡張機能はありません。" . PHP_EOL;
    } else {
        // 配列をループして、各拡張機能の名前を表示します。
        foreach ($extensions as $extensionName) {
            echo "- " . $extensionName . PHP_EOL;
        }
    }

    echo "-----------------------------------" . PHP_EOL;
}

// 上記で定義した関数を実行します。
displayLoadedPhpExtensions();

get_loaded_extensions関数は、現在PHPにロードされている拡張機能の一覧を取得するために使用されます。この関数は$zend_extensionsというオプションの引数を持ち、デフォルトではfalseに設定されています。引数をtrueに設定するとZend拡張機能もリストに含まれますが、省略したりfalseを指定したりした場合はPHPの通常の拡張機能のみが返されます。関数は、ロードされている各拡張機能の名前を文字列として含む配列を戻り値として返します。

提供されたサンプルコードでは、displayLoadedPhpExtensions関数内でget_loaded_extensions()を引数なしで呼び出し、PHPにロードされている拡張機能のリストを取得しています。取得した拡張機能のリストは$extensions変数に配列として格納されます。その後、この配列が空でないかを確認し、拡張機能がロードされている場合はforeachループを使って、各拡張機能の名前を一行ずつ画面に表示しています。もし拡張機能が一つもロードされていない場合は、その旨を伝えるメッセージが表示される仕組みです。この関数を利用することで、PHP実行環境の構成を容易に確認し、必要な機能が利用可能か検証できます。

このサンプルコードは、PHPにロードされている拡張機能の一覧を取得します。get_loaded_extensions()関数は、引数$zend_extensionstrueを指定するとZend Engine関連の拡張機能もリストに含めますが、サンプルコードのように引数を省略するかfalseを指定すると、通常のPHP拡張機能のみが取得される点にご注意ください。

また、この関数が返す結果は、PHPが実行されている環境(Webサーバー経由かCLIかなど)によって異なる場合がありますので、実際の環境で確認することが重要です。戻り値は常に配列であるため、ループ処理は安全に行えますが、拡張機能が一つもロードされていない可能性も考慮し、empty()で配列が空でないかを確認する習慣は、システムの堅牢性を高める上で非常に有効です。

【PHP8.x】get_loaded_extensions関数の使い方 | いっしー@Webエンジニア