我有这个简单的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
但是,b rowser中显示的所有内容都是Retval 1,并且没有错误记录到任何一个文本文件中。我是否错误地混合了stderr和stdout,或者错过了其他什么?
答案 0 :(得分: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。
中找到你的最后一行(连同输出的其余部分)如果没有,请尝试直接运行shell脚本,看它是否产生任何输出。