php exec缺少输出

时间:2012-04-15 05:57:19

标签: php python exec nltk

我正在尝试通过PHP执行用于POS标记的python脚本。 但它没有返回完整的输出。

Python脚本:

import nltk
import sys

text = sys.argv[1]

tokenize_into_words = nltk.word_tokenize(text)

print text

result = nltk.pos_tag(tokenize_into_words)

print result

print "Done!"

PHP脚本

$cmd = 'python /Library/WebServer/Documents/varticle/vcmdpos.py ' . $string2;

$tmp = exec($cmd,$output);

print_r($output);

命令:

python /Library/WebServer/Documents/varticle/vcmdpos.py科学家

观察到的输出:

数组([0] =>科学家)

预期输出:

数组([0] =>科学家[1] =>“[('科学家','NNS')]”[2] =>“完成!”)

当我手动运行命令时,它会跑5到10秒左右。 [这可能是由于进行POS标记或导入nltk所需的时间。]

但是当通过PHP运行时,它会在没有返回后立即从nltk.pos_tag或print语句返回并输出。

我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

需要在命令中添加

2>& 1以获得完整输出。 这解决了我的问题。

答案 1 :(得分:0)

尝试使用shell_exec - 或者,如果你想拥有更多控制权,可以使用proc_open而不是exec()。