El problema que tengo es que debo modificar el PATH de windows (trabajo bajo windows) para que la linea de comandos encuentre la aplicación.
Windows tiene el PATH correctamente configurado, pero usando getenv("PATH") veo que internamente PHP usa otro valor.
Usando
Código PHP:
putenv("PATH=xxx");
Por otro lado, proc_open ofrece un argumento para configurar las variables de entorno, pero tampoco parece hacerme caso:
Código PHP:
$descriptor = array(
0 => array("pipe", "r"), // stdin es un pipe usado por el hijo para lectura
1 => array("pipe", "w"), // stdout es un pipe usado por el hijo para escritura
2 => array("file", "D:/salida-errores.txt", "a") // stderr es un archivo para escritura
);
$cwd = 'C:\\';
$env = array( 'PATH' => 'C:\\Archivos de programa\\XXX\\' );
$process = proc_open( $cmd, $descriptor, $pipes, $cwd, $env );
Por ultimo he probado usando una ruta absoluta, pero al encontrarse la aplicación dentro de "Archivos de Programa" (directorio con espacios) sigue sin encontrar la aplicación. He probado lo siguiente:
Código PHP:
$cmd = ' "C:\Archivos de programa\XXX\aaa.exe" '; //Aunque probandolo manualmente en la linea de comandos funciona, bajo proc_open() no encuentra la ruta
$cmd = 'C:\"Archivos de programa"\XXX\aaa.exe'; //aaa.exe se le va la pinza y falla
PD: Puede que veáis las rutas aquí escritas con errores sintácticos, es el foro que me obliga a escapar las \