外部プログラムを起動したい場合、
exec()関数を使うことができます。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>PHPで外部プログラムを起動してみる</title> <link rel="stylesheet" href="../style.css"> </head> <body> <form action="" method="post"> <input type="submit" name="program" value="起動する"> </form> <?php if( isset($_POST["program"] )){ //外部プログラムを実行する exec("notepad.exe index.php"); } ?> </body> </html> |
上記のサンプルコードで、Windowsのメモ帳を起動できます。
出力の最終行を戻り値として戻す、exec()関数以外にも、
戻り値がないsystem()関数を使うことができます。
system("コマンド名");
PHPには外部プログラムを起動する演算子「」(バッククォート)も
」でコマンドを囲みます。
あります。この場合は2つの「
コマンド名
外部プログラムを起動するには、セキュリティに注意が必要です。
外部プログラムを起動することで、WindowsなどのOSに対する
不正操作が実行されることもあります。そのことを
OSコマンドインジェクションといいます。
この状況を避けるには、外部プログラムの使用は必要な状況に
限定して、起動させたいプログラムが不正でないかを
判定しなければいけません。
ユーザーに起動プログラムを入力させるときは、不正な外部プログラムをの
起動やOSに対する操作が行われないように、入力文字列んに
escapeshelllcmd()関数を使うことができます。
この関数を使うと、「#&;|」といった不正なコマンドを起動する場合に
使われる特殊な文字がエスケープ処理されます。
関数名 | 戻り値 | 内容 |
---|---|---|
exec(string $str) | string | 外部プログラムを起動 |