通过PHP运行python脚本并将stdout,stderr重定向到文件

时间:2013-07-05 08:24:54

标签: php shell

我有一个PHP页面,我希望它能触发python脚本在后台运行,并将其stdout和stderr重定向到稍后要读取的文件。

我尝试了以下内容:

system('python -u /home/omar/workspace/test/test2.py > /home/omar/workspace/test/testfile &');

这样可以正常工作,因为PHP不会阻塞并且输出正确地写入文件。

但由于这只是stdout,我试着把&>而不是> :

system('python -u /home/omar/workspace/test/test2.py &> /home/omar/workspace/test/testfile &');

由于某种原因,这会导致页面被阻塞,并且python脚本的输出显示在PHP页面本身中,并且没有任何内容写入文件!

这种亵渎是否有理由?

2 个答案:

答案 0 :(得分:2)

我这样解决了:

system('python -u test2.py > testfile 2>&1 & echo $!');

最后一点是获取python实例的pid。

答案 1 :(得分:0)

我认为您需要使用>&而不是&>

见下面的详细信息

“>” 中重定向标准输出

“>&安培;”重定向标准输出和标准错误

“<”重定向标准输入

“&GT ;!”重定向标准输出;覆盖文件(如果存在)

“>&安培;!”重定向标准输出和标准错误;覆盖文件(如果存在)

“|”将标准输出重定向到另一个命令(管道)

“>>” 中附加标准输出

“>>&安培;”附加标准输出和标准错误