サンプル・プログラム
サンプル・プログラムの解説:バッククォート
PHPでOSネイティブなプログラムを走らせるのは簡単で、バッククォートでコマンドを囲むだけである。
バッククォートは演算子として作用し、戻り値は標準出力に返されるデータである。
ここでは Windows の set コマンドを使っており、環境変数の値がすべて変数 $output に格納する。そこから、 preg_match 関数を使い、Windows XPで標準設定される PROCESSOR_IDENTIFIER の値を取り出す。これが CPU の判定結果となる。
バッククォートは演算子として作用し、戻り値は標準出力に返されるデータである。
ここでは Windows の set コマンドを使っており、環境変数の値がすべて変数 $output に格納する。そこから、 preg_match 関数を使い、Windows XPで標準設定される PROCESSOR_IDENTIFIER の値を取り出す。これが CPU の判定結果となる。
55: $output = `set`; //DOSコマンドを実行する
56:
57: $flag = preg_match('/PROCESSOR_IDENTIFIER=(.*)\n/ui', $output, $arr);
58:
59: $body = ($flag == TRUE) ? ('CPUは ' . $arr[1]) : '判断できませんでした';
類似の関数
セキュリティとセーフモード
OSネイティブなコマンドを実行できるということは、使い方によってはサーバにダメージを与えかねない。たとえば del コマンドを実行するようにすれば、サーバに必要なファイルまで削除できてしまう。
そこで、PHPには「セーフモード」という概念があり、OSを守ることができるようになっている。(セーフモードはPHP 5.3.0で非推奨となり、PHP 5.4.0 で削除になった。)
セーフモードが ON の場合、バッククォート演算子などは働かない。したがって、厳密を期すなら、プログラムの冒頭で、PHPがセーフモードになっているかどうかを調べるロジックを追加すべきである。
そこで、PHPには「セーフモード」という概念があり、OSを守ることができるようになっている。(セーフモードはPHP 5.3.0で非推奨となり、PHP 5.4.0 で削除になった。)
セーフモードが ON の場合、バッククォート演算子などは働かない。したがって、厳密を期すなら、プログラムの冒頭で、PHPがセーフモードになっているかどうかを調べるロジックを追加すべきである。
(この項おわり)
そこで今回は、Windowsのコマンドを使って、PHPが動作しているサーバのCPUの種類を表示させるプログラムを作ってみることにする。