Webアプリをサーバに設置する際、有効、無効になっているモジュールの一覧が欲しいときがあります。

そういうときはphp.infoを使うのが手っ取り早いとは思いますが、セキュリティ上、それらをWebサイトに設置するのは好ましくありません。

そこで、以下のスクリプトをChatGPTに指示しながら出力しました。

スクリプト

  • php_modules.sh
#!/bin/bash

echo "PHP モジュール一覧を表示します。以下のオプションを選択してください。"
echo "0(またはエンターのみ): 全ての一覧を表示"
echo "1: 有効なモジュールのみを表示"
echo "2: 無効なモジュールのみを表示"

read -p "選択: " choice

case "$choice" in
  1)
    echo -e "\n有効なモジュールのみ表示:"
    enabled_modules=$(php -r '$count=0; $modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { if (extension_loaded($extension)) { echo $extension . ": Enabled\n"; $count++; } } echo $count;')
    echo "有効なものは${enabled_modules}件です"
    ;;
  2)
    echo -e "\n無効なモジュールのみ表示:"
    disabled_modules=$(php -r '$count=0; $modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { if (!extension_loaded($extension)) { echo $extension . ": Disabled\n"; $count++; } } echo $count;')
    echo "無効なものは${disabled_modules}件です"
    ;;
  *)
    echo -e "\n全てのモジュールを昇順で表示:"
    php -r '$modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { echo $extension . ": " . (extension_loaded($extension) ? "Enabled" : "Disabled") . "\n"; }'
    ;;
esac
  • スクリプトに実行権限付与
chmod +x php_modules.sh

スクリプトの動き

  • 実行
./php_modules.sh
  • 実行結果抜粋
PHP モジュール一覧を表示します。以下のオプションを選択してください。
0(またはエンターのみ): 全ての一覧を表示
1: 有効なモジュールのみを表示
2: 無効なモジュールのみを表示
選択: 

全てのモジュールを昇順で表示:
Core: Enabled
FFI: Enabled
(略)

と、これでモジュールのチェックを事前に行うことが可能になりました。