0

私はこの単純なphpスクリプトを持っています

<?php
echo '<pre>';

// Outputs all the result of shellcommand "ls", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
$last_line = $output = system ("~/public_html/cgi-bin/srch.sh &> ~/public_html/errors.txt",$retval);

// Printing additional info
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>

srch.sh に依存するもの:

#!/bin/bash

for i in ~/mail/home/user/mail/domain.com/josh/cur/*
do
grep -i Value $i . &> ~/public_html/yesno.txt;
done

ただし、ブラウザに表示されるのは Retval 1 だけであり、どちらのテキスト ファイルにもエラーは記録されません。stderr と stdout を間違って混合したり、何か他のものを見逃したりしましたか?

4

1 に答える 1

1

$last_line = $output = system ("~/public_html/cgi-bin/srch.sh &> ~/public_html/errors.txt",$retval);

上記の行は srch.sh を実行し、生成されるすべての出力を errors.txt にリダイレクトします。したがって、$output (および $last_line) に割り当てる出力は残っていません。最後の行は (出力の残りの部分と一緒に) errors.txt にあります。

そうでない場合は、シェル スクリプトを直接実行して、出力が生成されるかどうかを確認してください。

于 2009-01-21T13:49:12.143 に答える