
サンプル・プログラム
サンプル・プログラムの解説:バッククォート
PHP で OS ネイティブなプログラムを走らせるのは簡単で、バッククォートでコマンドを囲むだけである。
バッククォートは演算子として作用し、戻り値は標準出力に返されるデータである。

ここでは Windows の set コマンドを使っており、環境変数の値がすべて変数 $output に格納する。そこから、 preg_match 関数を使い、Windows XP で標準設定される PROCESSOR_IDENTIFIER の値を取り出す。これが CPU の判定結果となる。
バッククォートは演算子として作用し、戻り値は標準出力に返されるデータである。

ここでは Windows の set コマンドを使っており、環境変数の値がすべて変数 $output に格納する。そこから、 preg_match 関数を使い、Windows XP で標準設定される PROCESSOR_IDENTIFIER の値を取り出す。これが CPU の判定結果となる。
0055: $output = `set`; //DOSコマンドを実行する
0056:
0057: $flag = preg_match('/PROCESSOR_IDENTIFIER=(.*)\n/ui', $output, $arr);
0058:
0059: $body = ($flag == TRUE) ? ('CPUは ' . $arr[1]) : '判断できませんでした';
類似の関数
セキュリティとセーフモード
OS ネイティブなコマンドを実行できるということは、使い方によってはサーバにダメージを与えかねない。たとえば del コマンドを実行するようにすれば、サーバに必要なファイルまで削除できてしまう。
そこで、PHP には「セーフモード」という概念があり、OS を守ることができるようになっている。

セーフモードが ON の場合、バッククォート演算子などは働かない。したがって、厳密を期すなら、プログラムの冒頭で、PHP がセーフモードになっているかどうかを調べるロジックを追加すべきである。
そこで、PHP には「セーフモード」という概念があり、OS を守ることができるようになっている。

セーフモードが ON の場合、バッククォート演算子などは働かない。したがって、厳密を期すなら、プログラムの冒頭で、PHP がセーフモードになっているかどうかを調べるロジックを追加すべきである。
(この項おわり)
そこで今回は、Windows のコマンドを使って、PHP が動作しているサーバの CPU の種類を表示させるプログラムを作ってみることにする。