Foros del Web » Programando para Internet » PHP »

Problema al intentar abrir el wordpad.exe

Estas en el tema de Problema al intentar abrir el wordpad.exe en el foro de PHP en Foros del Web. Hola, intento abrir el wordpad.exe (por ejemplo) mediante la orden: system("c:\Archivos de programa\Windows NT\Accesorios\wordpad.exe"); Y no hace nada... por qué? Leí de probar con barras ...
  #1 (permalink)  
Antiguo 09/05/2006, 09:13
Avatar de djfran28  
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Problema al intentar abrir el wordpad.exe

Hola, intento abrir el wordpad.exe (por ejemplo) mediante la orden:

system("c:\Archivos de programa\Windows NT\Accesorios\wordpad.exe");

Y no hace nada... por qué?

Leí de probar con barras dobles \\ y tampoco...

Tampoco funciona exec, ni shell_exec...


Gracias.
  #2 (permalink)  
Antiguo 09/05/2006, 10:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. es que no entendistes el funcionamiento de la función system() o similares de PHP ..

Con esas funciones NO vas abrir tu aplicación para que puedas interactuar con ella. Ese tipo de funciones (system() .. etc) se usan para ejecutar procesos tipo "segundo plano" .. procesos tipo: al ejecutar tal.exe .. genera un archivo por otro lado .. o similar. NADA de aplicaciones que tengan que interactuar con el usuario (como las que mencionas).

Si quieres interactuar con aplicaciones windows en un ambiente windows (con PHP corriendo en windows: no funciona en "LINUX"). Tendrás que usar COM:

www.php.net/com

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 09/05/2006, 10:32
Avatar de djfran28  
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Gracias, lo quiero para que mande imprimir una plantilla .rtf con datos de la BBDD en una imprsora en red, asique interaccion 0, ya le paso yo los parametros.

El problema eran las rutas del wordpad que tienen que ir con barras dobles \\ y ademas al tener espacios en blanco tenia que mostrar tambien las comillas dobles para que al enviar la ruta al cmd encontrara el programa y me faltaba poner los caracteres de escape.

Ya funciona. Gracias.
  #4 (permalink)  
Antiguo 09/05/2006, 11:04
Avatar de Felipe Torres  
Fecha de Ingreso: abril-2006
Mensajes: 81
Antigüedad: 11 años, 7 meses
Puntos: 1
Hola djfran28:

Podrias poner como quedo al final la sintaxis que tienes para tal caso?

Gracias
  #5 (permalink)  
Antiguo 09/05/2006, 12:44
Avatar de djfran28  
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Cita:
Iniciado por Felipe Torres
Hola djfran28:

Podrias poner como quedo al final la sintaxis que tienes para tal caso?

Gracias
Claro:

Código:
$programa = "\"C:\\Archivos de programa\\Windows NT\\Accesorios\\wordpad.exe\"";
$op1 = " /pt";
$impresora1 = " \\\USIHPC1\\HPOffice";
$fichero = " C:\\AppServ\\www\\Incidencias2\\temporal.rtf";
$instruccion = $programa.$op1.$fichero.$impresora1;

exec($instruccion);

Última edición por djfran28; 10/05/2006 a las 03:51
  #6 (permalink)  
Antiguo 16/05/2006, 10:15
Avatar de djfran28  
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Puede ser que la funcion exec(), system(), etc. no funcionen en windows 2000?
  #7 (permalink)  
Antiguo 16/05/2006, 10:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por djfran28
Puede ser que la funcion exec(), system(), etc. no funcionen en windows 2000?
Que funcionen dichas funciones no depende del S.O. del servidor (las funciones de PHP propiamente dichas). Sino de que PHP no use por ejemplo "safe mode" (modo seguro) lo cual limita ese tipo de funciones a ejecutar.

Al ejecutar esas funciones y tu decir "no me funcionan" algún mensaje de error debes observar y si no te es mostrado hay que forzar verlo. Por ejemplo, las funciones exec() system() y equivalentes tienen parámetros para tomar el posible mensaje de error que dé al ejecutarse y/o salida de lo que la ejecución de tu comando origine (para que veas mensajes de error própios del S.O. y de la ejecución de cierto comando). Usalos.

Revisalo en tu configuración de PHP:
http://www.php.net/features.safe-mode

Por otro lado .. en un entorno tipo Windows 2000, 2003, XP pro .. tienes que tener presente el tema de los permisos de ejecución y acceso a archivos .. PHP usa cierto usuario (no sé como instalstes PHP en tu servidor ni bajo que servidro HTTP .. pero eso condiciona al usuario que va a usar PHP cara a ejecutar cualquier comando o acceder al sistema de archivos del servidor).

Realmente no sé si vistes el uso de COM .. pero ya que trabajas en entorno windows (servidores al menos) deberías evaluar esa opción. (por qué está diseñada para no tener problemas con el tema de "permisos" de usuarios .. ni de que PHP pueda o no usar exec() (modo seguro activado o no ...), etc.

Como observación .. estás desarrollando una aplicación (el tema de la impresión) que realmente te está condicionando mucho la forma de trabajo y servidores: tienen que ser windows, bajo una "LAN" .. en fin .. es sólo una opinión. Pero realmente PHP no se diseño para trabajar como pretendes (aunque lo hagas) .. el día que "migres" o tengas por fuerza correr tu aplicación en otros S.O. tendrás problemas. Ojo con eso ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 16/05/2006, 16:07
Avatar de djfran28  
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Miraré eso de los COM.
Yo lo tenia bajo local en un windows xp pro y despues instale un pack con php, mysql, apache y todo listo xa ejecutar que no pone safe mode creo. Todo va bien pero cuando manda a imprimir se queda la pagina con la barra de cargando y no hace nada, miraré de capturar el error o lo que sea.

Lo que me mosquea es que si ejecuto el comando tal cual (hago un echo del comando completo tras componerlo, $instruccion) en la consola de windows o en Ejecutar si funciona, pero en el PHP no. Comprobare lo de los permisos pero me extraña.

Ya se que no es lo mejor para php, pero es loq me han pedido hacer, una web y en un momento q el usuario rellena un formulario se inserta en la BBDD y se imprime una hoja rellenada cn esos datos... no es migrable ni nada pero bueno, es loq kieren y como lo quieren.


Gracias.
  #9 (permalink)  
Antiguo 17/05/2006, 02:40
Avatar de djfran28  
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
No esta en safe mode.
  #10 (permalink)  
Antiguo 17/05/2006, 03:03
Avatar de djfran28  
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Al final lo he ehcho con los COM y ya funciona correctamente en windows 2000 y sin problemas.

$Shell = new COM("WScript.Shell");
$oExec = $Shell->Run($instruccion);

Muchas gracias.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 03:24.