2012-03-26 129 views
0

我使用PHP中的readline读取标准输入,但是当我运行该文件时,PHP回声所有输入回给我。我使用的是这样的:标准输入法PHP回声readline

<file php file | otherprogram 

当我在我的服务器上运行它,它像我期望的,但是当我在我的笔记本电脑上运行它(PHP 5.3.10用了Suhosin贴片(CLI))它将stdin输出到stdout以及脚本的实际输出。这很烦人,因为我将输出管道输送到otherprogram

我试图通过输出缓冲来捕获输出,但那不起作用。

有没有人知道可能是什么原因造成的?

+0

不知道你想在这里,但也许[这](http://php.net/manual/en/wrappers.php.php)可以是有用的 – haltabush 2012-03-26 11:44:38

+0

我正在阅读从标准输入使用内置的readline ()函数,但是当我这样做时,标准输入打印到标准输出 – 2012-03-26 11:55:47

回答

1

我知道这个问题有点过时,但我有同样的问题。我相信以下两件事之一会导致它:php中的readline()函数回应它接收到的输入(一次一个字符),因此它在预期的输出之前结束为“输出”。如果不是这样,那么bash shell会在输入时回显输入。

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

+0

>我一直无法捕捉PHP的输出端,使用其输出缓冲功能(ob_start和ob_end_clean)。 我尝试了相同的结果。 – 2012-07-04 18:34:24