我有一个场景,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脚本运行但日志文件没有被创建。我做错了什么?