10秒目をつむったら…

こんばんは。

PHPで開発を行っているのですが、外部コマンドを実行した際に、期待した結果が返ってこなくて困っています。
echo exec('grep 検索文字 ファイル名');
と書いて実行すると、最後の検索結果しか表示されません。
上記を$cmd変数に入れ、
exec($cmd,$status,$result);
echo $result;
と書くと、int(0)が表示されます。
何か、根本的に間違えているのでしょうか。

よろしくお願いいたします。

A 回答 (2件)

exec()の返り値はコマンドの実行結果の最後の行ですので、exec()のどうさとしては間違っていません。


http://jp2.php.net/manual/ja/function.exec.php

なのでshell_exec()かpassthru()を使うのがよいでしょう。
こちらは出力全体を返してくれます。
http://jp2.php.net/manual/ja/function.shell-exec …
http://jp2.php.net/manual/ja/function.passthru.php
    • good
    • 0
この回答へのお礼

shell_execで、受け取ることができました。
ありがとうございました!!

お礼日時:2008/10/21 00:41

execの実行結果は第2パラメータに返されます。

その際第2パラメータはあらかじめ配列として初期化しておく必要があります。
結果は配列として格納されている点にもご注意ください。
例)
$txt= array();
exec('grep 検索文字 ファイル名',$txt);
var_dump($txt);

結果を単純な文字列として受け取りたい場合はANo.1さんの方法を取りましょう。
ちなみに、文字列として受け取るのであれば、こんな書き方も出来ます。
$txt = `grep 検索文字 ファイル名`;
    • good
    • 0
この回答へのお礼

配列でも受け取れるんですね!
おそらく、私の書き方が間違っていたんですね。。。
もう一度試してみます!

お礼日時:2008/10/21 00:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!