当脚本通过php执行时,将STDERR和STDOUT重定向到日志文件

时间:2016-04-22 16:24:28

标签: php exec

我有一个场景,php文件使用exec函数运行perl脚本文件。我希望STDOUT和STDERR被重定向到一个日志文件,然后可以通过ajax调用另一个php文件来读取。

问题:当通过PHP调用脚本时,我无法重定向STDOUT和STDERR。

Php代码:

$cmd=getcwd().'/scheduledscrape.pl --path='.$spath.' --size='.$filesize;
$outputlastline = exec($cmd, $output);
print $outputlastline;

我尝试通过将上面的代码更改为:

来修改它
$cmd=getcwd().'/scheduledscrape.pl --path='.$spath.' --size='.$filesize.' >log.txt 2>&1';

但没有发生任何事。在php文档中读到这个,有人评论说要重定向输出,需要调用另一个shell脚本。因此我尝试了这个:

$cmd=getcwd().'/runscript.sh '.getcwd().'/scheduledscrape.pl --path='.$spath.' --size='.$filesize;
$outputlastline = exec($cmd, $output);
print $outputlastline;

并且shell脚本包含:

echo "$@" > running.txt
"$@" >log.txt 2>&1

但是没有发生任何事情,即perl脚本运行但日志文件没有被创建。我做错了什么?

0 个答案:

没有答案