Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/02/2009, 05:41
clinisbut
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
variables de entorno

Estoy intentando ejecutar comandos con la funcion proc_open() (Parecida a exec() y demás).

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"); 
El valor original no se modifica, de manera que no puedo ejecutar la aplicación deseada.
Por otro lado, proc_open ofrece un argumento para configurar las variables de entorno, pero tampoco parece hacerme caso:
Código PHP:

$descriptor 
= array(
                   
=> array("pipe""r"),  // stdin es un pipe usado por el hijo para lectura
                   
=> array("pipe""w"),  // stdout es un pipe usado por el hijo para escritura
                   
=> 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 
Alguna idea?


PD: Puede que veáis las rutas aquí escritas con errores sintácticos, es el foro que me obliga a escapar las \