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

作成日: 更新日:

ini_get_all関数は、現在のPHP実行環境におけるすべての設定項目に関する情報を取得する関数です。PHPの動作を制御する設定(php.iniファイルで定義されているものや、Webサーバーの設定、スクリプト内で動的に変更されたものなど)を一覧で確認したい場合に非常に役立ちます。

この関数を実行すると、PHPの実行時設定が連想配列として返されます。配列の各要素は、設定項目名をキーとして持ち、その値としてさらに設定の詳細情報が格納された連想配列を含みます。具体的には、各設定項目の現在の値(local_value)、初期値(master_value)、そして設定がどこで変更可能かを示すアクセスレベル(access)などが含まれます。

オプションの引数を指定することで、取得する情報を絞り込んだり、より詳細な情報を取得したりすることが可能です。例えば、最初の引数に特定のPHP拡張モジュール名(例: 'mysqli')を渡すと、そのモジュールに関連する設定のみを取得できます。また、2番目の引数にtrueを設定すると、設定のアクセスレベルに関するさらに詳細な情報が返され、どの範囲で設定が変更され得るのか(例: PHP_INI_USERはユーザー定義可能、PHP_INI_SYSTEMはシステムでのみ変更可能など)を把握するのに役立ちます。

ini_get_all関数は、現在のPHP環境の構成を把握したり、特定の設定値が意図した通りになっているかを確認したりするデバッグやトラブルシューティングの際に、システムの動作状況を理解するための重要なツールとなります。

基本的な使い方

構文(syntax)

<?php

$all_ini_settings = ini_get_all();

引数(parameters)

?string $extension = null, bool $details = true

  • ?string $extension = null: 取得したいPHP設定ディレクティブ名を指定する文字列。省略した場合、すべての設定ディレクティブが取得されます。
  • bool $details = true: 設定ディレクティブの詳細情報を取得するかどうかを指定する真偽値。true の場合、ディレクティブ名、現在の値、デフォルト値、アクセスレベルなどが含まれます。false の場合、現在の値のみが返されます。

戻り値(return)

array|false

PHPのini_get_all関数は、PHPの設定ディレクティブとその現在の値を配列で返します。設定の取得に失敗した場合はfalseを返します。

サンプルコード

PHPでini設定をすべて取得する

<?php

/**
 * PHPのすべてのINI設定を取得し、整形して表示します。
 *
 * ini_get_all関数を使用し、php.iniで定義されている設定の
 * マスター値、ローカル値、変更モードなどの詳細情報を取得します。
 */
function displayAllIniSettings(): void
{
    // ini_get_all関数を呼び出し、すべてのPHP設定を詳細情報付きで取得します。
    // 引数を省略すると、デフォルトで全ての拡張機能の設定が取得されます。
    $iniSettings = ini_get_all();

    // 設定の取得に失敗した場合の処理(メモリ不足など稀なケース)
    if ($iniSettings === false) {
        echo "エラー: ini_get_all関数で設定の取得に失敗しました。\n";
        return;
    }

    echo "--- PHPのすべてのINI設定の取得結果 ---\n";

    // 取得した設定は連想配列として返されます。
    // print_r を使うと、配列の構造と内容を人間が読みやすい形式で出力できます。
    print_r($iniSettings);

    echo "\n--- 特定の設定へのアクセス例 ---\n";
    // 例: 'display_errors' 設定の値にアクセスする方法
    // 各設定はさらに配列になっており、'global_value' (マスター値) や 'local_value' (現在の値) を持ちます。
    if (isset($iniSettings['display_errors'])) {
        echo "display_errors (マスター値): " . $iniSettings['display_errors']['global_value'] . "\n";
        echo "display_errors (ローカル値): " . $iniSettings['display_errors']['local_value'] . "\n";
    } else {
        echo "注: 'display_errors' 設定が見つかりませんでした。\n";
    }
}

// 関数を実行し、PHP設定を表示します。
displayAllIniSettings();

PHPのini_get_all関数は、php.iniファイルで定義されている設定や、実行時に変更された設定など、PHPに関するすべての設定情報を取得するために使用されます。この関数は、システムの現在の状態をプログラムから確認したり、デバッグを行う際に非常に役立ちます。

引数$extensionを省略するかnullを指定すると、すべてのPHP拡張機能の設定が対象となります。また、$details引数をtrue(デフォルト値)に設定すると、各設定のマスター値(php.iniで定義された初期値)、ローカル値(現在の実行環境で有効な値)、変更モードといった詳細情報も取得できます。戻り値は設定情報を格納した連想配列、または取得に失敗した場合はfalseを返します。

サンプルコードでは、引数なしでini_get_all()を呼び出し、PHPの全設定を詳細情報付きで取得しています。取得した設定情報は$iniSettings変数に連想配列として格納され、print_r関数によってその構造と内容が分かりやすく出力されます。例えば、display_errors設定のように、各設定はさらに配列となっており、global_value(マスター値)やlocal_value(現在の有効値)といったキーを通じてそれぞれの値にアクセスできます。設定の取得に失敗した場合は、エラーメッセージを表示して処理を終了します。この関数を使うことで、PHP環境の詳細な設定状況をプログラムから確認し、必要に応じて利用することが可能です。

ini_get_all関数はPHPのINI設定をすべて取得しますが、失敗時にはfalseを返すため、必ず戻り値をチェックしてください。取得結果は多次元の連想配列となり、$iniSettings['設定名']['local_value']のように、設定名と詳細キーを指定して値にアクセスします。

サンプルでは引数を省略していますが、第1引数で特定の拡張機能の設定のみを取得したり、第2引数をfalseにして詳細情報を含めないようにしたりすることも可能です。すべての設定を取得するため、メモリ使用量や処理時間に注意し、必要な情報のみを取得するよう心がけましょう。

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