在stdin上的PHP echos readline

时间:2012-03-26 11:39:57

标签: php stdin readline

我在PHP中使用readline从stdin读取,但是当我运行该文件时,PHP回应所有输入给我。我使用它像:

<file php file | otherprogram

当我在我的服务器上运行它时,它的效果与我预期的一样,但是当我在笔记本电脑上运行它(带有Suhosin-Patch(cli)的PHP 5.3.10)时,它会将stdin输出到stdout,以及实际的输出的脚本。这非常烦人,因为我将输出汇总到otherprogram

我尝试使用输出缓冲捕获输出,但这没有用。

有人知道可能导致这种情况的原因吗?

1 个答案:

答案 0 :(得分:1)

我知道这个问题有点陈旧,但我遇到了同样的问题。我相信有两个原因导致它:php中的readline()函数回显它接收的输入(一次一个字符),因此它最终在预期输出之前被“输出”。如果不是这样,那么bash shell会在输入时回显输入。

我有点倾向于认为这是后一种情况,因为我无法使用其输出缓冲函数(ob_start和ob_end_clean)来捕获PHP结尾的输出。