Foros del Web » Programando para Internet » PHP »

Ejecutar programas desde php que preguntan al usuario

Estas en el tema de Ejecutar programas desde php que preguntan al usuario en el foro de PHP en Foros del Web. Esta es una duda un tanto atípica la verdad, pero bueno.. resulta que tengo que crear archivos zip con password, para eso uso infozip (el ...
  #1 (permalink)  
Antiguo 06/07/2004, 13:41
 
Fecha de Ingreso: enero-2003
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Ejecutar programas desde php que preguntan al usuario

Esta es una duda un tanto atípica la verdad, pero bueno.. resulta que tengo que crear archivos zip con password, para eso uso infozip (el zip de debian), pero claro infozip no me permite ponerle la clave como parámetro, me pregunta por la clave..
Como es de suponer esto en un entorno web no es admisible.. la solución mas rapida que se me ocurrió fue que un amigo me hiciera un script en expect que hiciera el trabajo feo por mi, pero el script me hace mas bien poco caso, el unico codigo de error que devuelve es el 127 (el apache tiene permisos de escritura si se pregunta...)

La otra solución que se me ha ocurrido es interactuar yo directamente con zip, pero ya en el script de prueba tengo problemas..

Código PHP:
        $proc popen("zip -e test554.zip zip.exe""w");
        if (
$proc) {
            
sleep(2);
            
fputs($proc"hola\r"5);
            
sleep(2);
            
fputs($proc"hola\r"5);
        }
        
var_dump(@$out, @$return); 
No solo envía sendos null, sino que además el programa se queda esperando infinitamente..

¿Alguna sugerencia? (modificar el programa en sí es suicida si alguien piensa sugerirlo, son centenares de líneas de código en C con muchas, muchisimas condiciones de preprocesador)
  #2 (permalink)  
Antiguo 06/07/2004, 14:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm seguro que ese parámetro no puede ir en línea de comandos? como para lanzar un exec() de esa línea de comandos (shell) que requieras?.

Un saludo,
  #3 (permalink)  
Antiguo 06/07/2004, 15:01
 
Fecha de Ingreso: enero-2003
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Cita:
Iniciado por Cluster
mm seguro que ese parámetro no puede ir en línea de comandos? como para lanzar un exec() de esa línea de comandos (shell) que requieras?.

Un saludo,
Siempre pregunta por el password
  #4 (permalink)  
Antiguo 06/07/2004, 15:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. (salvo que me corrijan) .. PHP y sus funciones tipo exec() que se usan para hacer llamadas al S.O. bajo línea de comandos .. pueden obtener respuesta de lo que ejecutan (mensaje de error o la salída própia que genere a "consola" ese ejecutable) .. pero no pueden "esperar" y "simular" E/S con tu aplicación.

Tu ejecutable no es un "socket" así que tampoco puedes "abrirlo" como para enviar/recibir datos por el ..

La única solución que se me ocurre es que busques algún otro compresor en formato .zip para tu S.O. que acepte control total sobre línea de comandos (incluido tu funcionalidad sobre darle un "password" para abrirlo/crearlo).

O .. usar alguna classe de PHP integra que permita abrir/guardar en formato comprimido zip (lo que no sé si soportará el tema de contraseñas).

Revisalo:
http://www.phpclasses.org/browse/package/945.html
(tienes más en el mismo sitio)

Un saludo,
  #5 (permalink)  
Antiguo 06/07/2004, 16:47
 
Fecha de Ingreso: enero-2003
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Aparentemente he conseguido aislar parte del problema, el script en expect funciona en otro servidor con una configuración similar así que solo me queda agobiar al administrador, de todas formas no deja de ser interesante saber como enfrentarse a estos problemas sin necesidad de intermediarios así que si hay alguien que pueda iluminarnos ;)
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 20:25.