2012-03-26 11 views
0

Ich benutze readline in PHP, um von stdin zu lesen, aber wenn ich die Datei ausführen, echo PHP alle Eingaben zurück zu mir. Ich verwende es mag:PHP Echos readline auf stdin

<file php file | otherprogram 

Wenn ich das auf meinem Server laufen, funktioniert es wie ich erwarten würde, aber wenn ich es auf meinem Laptop (PHP 5.3.10 mit Suhosin-Patch (cli)) führen Sie es gibt die stdin zusammen mit der tatsächlichen Ausgabe des Skripts an stdout aus. Das ist ziemlich ärgerlich, da ich den Ausgang an otherprogram binde.

Ich versuchte, die Ausgabe mit Pufferung der Ausgabe zu fangen, aber das hat nicht funktioniert.

Hat jemand eine Idee, was könnte das verursachen?

+0

Nicht sicher, was Sie hier wollen, aber vielleicht [diese] (http://php.net/manual/en/wrappers.php.php) kann nützlich sein – haltabush

+0

Ich lese von Stdin mit der eingebauten Readline() Funktion, aber wenn ich dies tue, wird die stdin auf die stdout ausgegeben –

Antwort

1

Ich weiß, diese Frage ist ein bisschen veraltet, aber ich habe das gleiche Problem. Ich glaube, eines von zwei Dingen verursacht es: Die readline() - Funktion in php gibt die empfangene Eingabe zurück (ein Zeichen nach der anderen), und so wird sie vor der beabsichtigten Ausgabe "ausgegeben". Wenn dies nicht der Fall ist, gibt die Bash-Shell die Eingabe zurück, während sie eingegeben wird.

Ich bin etwas geneigt zu glauben, dass es der letztere Fall ist, weil ich nicht in der Lage gewesen bin, die Ausgabe auf PHP-Ende zu fangen, seine Ausgabe Pufferfunktionen (ob_start und ob_end_clean) verwenden.

+0

> Ich war nicht in der Lage, die Ausgabe auf PHP-Ende zu fangen, mit seiner Ausgabe Pufferfunktionen (ob_start und ob_end_clean). Ich habe das gleiche mit den gleichen Ergebnissen versucht. –