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
(略)
と、これでモジュールのチェックを事前に行うことが可能になりました。