PHP将值传递给命令行:无法读取第一行输出

时间:2016-08-20 05:12:35

标签: php python command-line stdout stdin

我有以下代码从Python运行PHP脚本,并将输入值传递给stdin。 (source

$descriptorspec = array(
        0 => array("pipe", "r"), 
        1 => array("pipe", "w")
    );  
    $process = proc_open('python script.py', $descriptorspec, $pipes, null, null); 
    if (is_resource($process)) {
        fwrite($pipes[0], "first input"); // input 1            
        fwrite($pipes[0], "second input"); // input 2

        fclose($pipes[0]); // has to be closed before reading output!
        fgets($pipes[1]); 
        $output = "";
        while (!feof($pipes[1])) {
            $output .= fgets($pipes[1]) . "</br>";
        }
        fclose($pipes[1]);
        proc_close($process);  
        echo $output;
    }

问题:$output在命令行上捕获除stdout第一行以外的所有内容。例如,如果Python程序打印HellofromPython是连续的行,$output只包含from和{{1} }。我如何捕获Python的第一行?

0 个答案:

没有答案