php调用bash问题

时间:2009-01-21 13:27:48

标签: php bash cgi

我有这个简单的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,或者错过了其他什么?

1 个答案:

答案 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脚本,看它是否产生任何输出。