我在PHP中使用readline从stdin读取,但是当我运行该文件时,PHP回应所有输入给我。我使用它像:
<file php file | otherprogram
当我在我的服务器上运行它时,它的效果与我预期的一样,但是当我在笔记本电脑上运行它(带有Suhosin-Patch(cli)的PHP 5.3.10)时,它会将stdin输出到stdout,以及实际的输出的脚本。这非常烦人,因为我将输出汇总到otherprogram
。
我尝试使用输出缓冲捕获输出,但这没有用。
有人知道可能导致这种情况的原因吗?
答案 0 :(得分:1)
我知道这个问题有点陈旧,但我遇到了同样的问题。我相信有两个原因导致它:php中的readline()函数回显它接收的输入(一次一个字符),因此它最终在预期输出之前被“输出”。如果不是这样,那么bash shell会在输入时回显输入。
我有点倾向于认为这是后一种情况,因为我无法使用其输出缓冲函数(ob_start和ob_end_clean)来捕获PHP结尾的输出。