Foros del Web » Programando para Internet » PHP »

variables de entorno

Estas en el tema de variables de entorno en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/02/2009, 05:41
 
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 \
  #2 (permalink)  
Antiguo 03/02/2009, 08:59
Avatar de eft0  
Fecha de Ingreso: junio-2003
Ubicación: Santiago - Chile
Mensajes: 635
Antigüedad: 20 años, 10 meses
Puntos: 9
Respuesta: variables de entorno

Para este tipo de operaciones yo prefiero escribir un pequeño código Batch (archivos .bat) que es mas seguro y nativo de Win32. Te recomiendo darle una vuelta a esto último.
__________________
eft0's stuff! - http://estebanfernandez.net
  #3 (permalink)  
Antiguo 03/02/2009, 10:49
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: variables de entorno

dinisbut:

El path de windows que se establece donde se encuentran las variables de entorno sirven para indicarle al SISTEMA OPERATIVO, en este caso windows que puede ejecutar cualquier ejecutable que se encuentre en el PATH desde cualquier punto dentro del disco del sistema.
Es decir puedes ejecutar el php.exe desde cualquier lugar.
Ahora el path que utiliza PHP para ejecutar aplicaciones es el del
servidor con el cual trabaja php y nada tiene que ver con el PATH de windows.
Es decir que PHP puede ejecutar cualquier aplicacion via la funcion
exec() siempre y cuando se encuentre dentro del area del servidor.

Por lo anterior->
Cita:
//Aunque probandolo manualmente en la linea de comandos funciona, bajo proc_open() no encuentra la ruta
Copia el aaa.exe dentro del area de la web o dentro del directorio donde esta alojado el archivo php que llama el proc_open(....)
Y te funcionara.

Saludos
Franco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:11.