- ベストアンサー
外部コマンドの実行結果の取得
こんばんは。 PHPで開発を行っているのですが、外部コマンドを実行した際に、期待した結果が返ってこなくて困っています。 echo exec('grep 検索文字 ファイル名'); と書いて実行すると、最後の検索結果しか表示されません。 上記を$cmd変数に入れ、 exec($cmd,$status,$result); echo $result; と書くと、int(0)が表示されます。 何か、根本的に間違えているのでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
exec()の返り値はコマンドの実行結果の最後の行ですので、exec()のどうさとしては間違っていません。 http://jp2.php.net/manual/ja/function.exec.php なのでshell_exec()かpassthru()を使うのがよいでしょう。 こちらは出力全体を返してくれます。 http://jp2.php.net/manual/ja/function.shell-exec.php http://jp2.php.net/manual/ja/function.passthru.php
その他の回答 (1)
- sgcarrot
- ベストアンサー率68% (17/25)
execの実行結果は第2パラメータに返されます。その際第2パラメータはあらかじめ配列として初期化しておく必要があります。 結果は配列として格納されている点にもご注意ください。 例) $txt= array(); exec('grep 検索文字 ファイル名',$txt); var_dump($txt); 結果を単純な文字列として受け取りたい場合はANo.1さんの方法を取りましょう。 ちなみに、文字列として受け取るのであれば、こんな書き方も出来ます。 $txt = `grep 検索文字 ファイル名`;
お礼
配列でも受け取れるんですね! おそらく、私の書き方が間違っていたんですね。。。 もう一度試してみます!
お礼
shell_execで、受け取ることができました。 ありがとうございました!!