J'invoque la proc_open() et je ne peux pas capturer la sortie du processus écrit au stderr:capture stderr d'un proc_open() sur les fenêtres
$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);
}
}
Le programme se bloque sur les fgets(). Si je lance le programme à partir de la ligne de commande, tout fonctionne, c'est-à-dire qu'il y a quelque chose d'écrit dans stderr (et j'ai aussi essayé en utilisant le stdout avec le même résultat). Je cours le manuscrit sur Windows - le même manuscrit sur Linux court doucement.
Comme je l'ai écrit ci-dessus, mon processus écrit définitivement quelque chose à la sortie et j'ai essayé de capturer les $ pipes [1] et les $ pipes [2] sans résultat. –