Ich Berufung auf die proc_open() und ich kann nicht den Ausgang des Prozesses zum stderr erfassen:Capture-stderr Ausgabe von einem proc_open() auf Windows
$curFolder = getcwd();
$procDescriptor = array(2 => array("pipe", "w"));
$cmd = "MyApp.exe -f optimization.csv";
$process = proc_open($cmd, $procDescriptor, $pipes, $curFolder);
if(is_resource($process) == true)
{
$procStatus = proc_get_status($process);
while($procStatus['running'] === true)
{
if(!feof($pipes[2]))
{
$logLine = fgets($pipes[2]);
echo("Read >${logLine}<");
}
sleep(1);
}
}
Das Programm auf dem fgets hängt(). Wenn ich das Programm über die Befehlszeile ausführe, funktioniert alles, d. H. Es wird etwas in den stderr geschrieben (und ich habe auch versucht, das stdout mit dem gleichen Ergebnis zu verwenden). Ich führe das Skript unter Windows aus - das gleiche Skript unter Linux läuft reibungslos.
Wie ich oben schrieb, schreibt mein Prozess definitiv etwas in die Ausgabe und ich versuchte beide, die $ pipes [1] und die $ pipes [2] ohne Ergebnis zu erfassen. –