2012-03-26 131 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