タグ

phpとshellに関するrizmhateのブックマーク (2)

  • PHPからunixシェルコマンドを実行しその結果を取得する。|プログラムメモ

    シェルコマンドを実行する関数は ・shell_exec() もしくは バッククォート(`)でコマンドを囲む ・passthru() ・system() ・exec() ・popen() ・proc_open() と6つありますが、 それぞれの違いは ・shell_exec() 「実行結果の出力がテキスト」のコマンドを実行する場合に使用する ・passthru()  「実行結果の出力がバイナリ」のコマンドを実行する場合に使用する ・system()   コマンド実行結果のうち最後の一行だけ取得 ・exec()     コマンド実行結果を指定した変数へ返す(配列で取得) ・popen()    プロセスへのファイルポインタをオープンする ・proc_open()  プロセスへの入出力用ファイルポインタを開く ・shell_exec()【コマンド実行結果を全て取得】(スカラーで取得) ・pass

  • PHP の exec(), shell_exec(), system() - foldrr's weblog

    どれを使えばいいのか exec() を使えばいい。 shell_exec() はリターンコードが取得不能なので不便。 system() はリダイレクトしないと勝手に標準出力へ出力するので不便。 まとめ 関数名 第1引数 第2引数 第3引数 戻値 出力 exec コマンド stdout リターンコード stdout なし shell_exec コマンド - - stdout なし system コマンド リターンコード - stdout あり exec() 第2引数 stdout の注意点 exec() の標準出力は第2引数 stdout へ追加されるので注意。 つまり、連続して exec() を呼び出す場合は第2引数に渡す変数を毎回クリアする必要がある。 非同期実行 exec, shell_exec, system どれでも可能。 以下は exec での例。 exec('filename

    PHP の exec(), shell_exec(), system() - foldrr's weblog
  • 1