【PHP】shell_execなどの関数が利用可能かどうかを調べる方法

  • 投稿 : 2018-09-15
disable_functions string
このディレクティブを使うと、特定の関数を セキュリティ の観点から無効にすることができます。 関数名の一覧をカンマ区切りで指定します。disable_functions は セーフモード の影響を受けません。
このディレクティブで無効にできるのは 内部の関数だけです。 ユーザーが定義した関数 は影響を受けません。
このディレクティブは php.ini で設定しなければなりません。 たとえばこれを httpd.conf で設定することはできません。
PHP: コア php.ini ディレクティブに関する説明 - Manual

phpの設定ファイルの「disable_functions」の項目にあれば、その関数は利用制限されて使えないということみたいです。

無料レンタルサーバーなどで一部使える関数が制限されている場合があるので、その時に利用可能かを調べるとかそういうときに使う目的で作成しました。たとえば、shell_execとかが動かないので、チェックして、動く場合はコマンドを実行、動作しない場合は代わりのPHPコードを実行か、利用できませんというメッセージをだすという具合に使います。

PHPのコード

//-----------------------
// 関数利用可否チェック
//-----------------------
function is_function_disabled( $function_name ) {
  return in_array( $function_name, array_map( 'trim', explode( ',', ini_get( 'disable_functions' ) ) ) );
}

//動作確認
echo is_function_disabled("shell_exec");

参考:
php - Check if "exec" is disabled - Stack Overflow

この手のサンプルコードは、ネット上にたくさんあるので、「disable_functions」とかで検索かけたら結構出てくるかと思います。
スポンサーリンク
タグ#PHP#code