Author Topic: Abrir programa en python desde php  (Read 3306 times)

biochemistry43

  • Jr. Member
  • **
  • Posts: 68
  • Karma: 0
    • View Profile
Abrir programa en python desde php
« on: Febrero 26, 2015, 07:05:10 am »
Hola a todos:

Intento abrir un programa python que se encuentra en la máquina local desde php pero no me permite abrirlo.

Mediante la función exec puedo llamar al script e interactuar con algunos valores. La problemática está en que yo desde python intento levantar una ventanita hecha en gtk (un selector de archivos).

En concreto, diré lo que necesito hacer:

Se trata de una aplicación en la que el usuario debiera de elegir una carpeta (de su máquina) para posteriormente copiar todo el contenido de la misma a otra ubicación.

Yo hice un pequeño script con Python que abre la ventana de selección de carpetas, eliges la carpeta deseada y el script realiza la copia. Pero definitivamente una vez interactuando con PHP ya no funciona.

Qué opciones tengo?? Se puede hacer algo??

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5403
  • Karma: 11
    • View Profile
    • Apuntes de programación
Re: Abrir programa en python desde php
« Reply #1 on: Febrero 26, 2015, 12:30:47 pm »
Hola:

pho.... ¿es una aplicacion web?. php se ejecuta  en el servidor. ¿Se te estar abriendo la ventana en el servidor?

Se bueno.

biochemistry43

  • Jr. Member
  • **
  • Posts: 68
  • Karma: 0
    • View Profile
Re: Abrir programa en python desde php
« Reply #2 on: Febrero 26, 2015, 09:36:44 pm »
Disculpen si no fui explicito>

La aplicación PHP está en el servidor e intento ejecutar el script de una máquina local (aunque el servidor en realidad está en la misma máquina ahora, pero después no será así).

Por eso digo que no estoy seguro de que se pueda (apenas comienzo a empaparme en el desarrollo web).

Hay una aplicación ya funcionando que hace gestión de usuarios, datos y todo lo normal de una aplicación web; pero ahora el cliente requiere o pide que ÉL (desde la aplicación web), pueda seleccionar una "carpeta" (no solo archivo) con varios archivos y subcarpetas y que el "sistema" automáticamente (despues de elegir la carpeta deseada), realice una copia de todo el contenido de dicha carpeta (además de pedir que se renombre la carpeta copiada) a otra ubicación dentro de su misma red LAN; en este caso un disco de respaldo de muchos terabytes será el destino de la carpeta copiada.

Con la etiqueta <input type="file"> no me permite elegir una carpeta entera, además no encontré ninguna solución posible ni en php o javascript para realizar dichas copias. Es por ello que intenté hacer un script python, el cual, ejecutado de manera local, abre una ventana que me permite elegir la carpeta y luego realiza la copia que necesito.

Ahora bien, mediante la instrucción exec de python, intentaba "disparar ese script local" pero no permite ejecutar todas las funciones. Exec permite que el script imprima y devuelva los valores impresos, pero no abre la ventana para elegir la carpeta deseada y me parece que tampoco permite hacer la copia.

Espero no haberlos aburrido con tanto texto. De antemano muchas gracias.
« Last Edit: Febrero 26, 2015, 09:39:13 pm by biochemistry43 »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5403
  • Karma: 11
    • View Profile
    • Apuntes de programación
Re: Abrir programa en python desde php
« Reply #3 on: Febrero 26, 2015, 10:53:42 pm »
Hola:

Cuando esté en un servidor y el cliente en otro pc, no te funcionará. php se ejecuta en el servidor y ejecutará el script python en el servidor y como mucho abrirá una ventana para elegir ficheros en el servidor. Por eso la pregunta que te hice, me temía que es lo que estabas intentando hacer e independientemente de que se abra o no la ventana (puede ser cualquier otro problema), la ventana se abrirá en el servidor y no en el cliente.

Como te comentó manix, no es posible llevar una carpeta completa del cliente al servidor sin colaboración del navegador web http://foro.chuidiang.com/php2/seleccionar-una-carpeta-desde-pagina-web/

Mira a ver con HTML5 que parece que da soporte para eso http://www.w3bees.com/2013/03/directory-upload-using-html-5-and-php.html , aunque tendrá que ver que navegadores soportan esa característica de HTML5.


Se bueno.
« Last Edit: Febrero 26, 2015, 10:56:54 pm by chuidiang »

biochemistry43

  • Jr. Member
  • **
  • Posts: 68
  • Karma: 0
    • View Profile
Re: Abrir programa en python desde php
« Reply #4 on: Febrero 26, 2015, 11:19:08 pm »
Quiere usted decir que ahora, como el script está en la misma máquina que el servidor, si se está ejecutando el script python pero cuando estén en máquinas diferentes, dejará de funcionar. Disculpe si pregunté algo que ya me dijo.

Ahora bien, estuve analizando la opción de html5 que usted me dió. De ello tengo una pregunta:

Si yo subo una carpeta completa al servidor, despues en el servidor puedo ejecutar el script (que se encuentre en el servidor) y que me permita copiar esos archivos a otro lugar (conectado en red con el servidor?)

También estuve viendo que activeX permite una mayor interacción con la máquina del cliente aunque se restringe a Explorer. Hay alguna opción para firefox o chrome similar?
« Last Edit: Febrero 26, 2015, 11:59:55 pm by biochemistry43 »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5403
  • Karma: 11
    • View Profile
    • Apuntes de programación
Re: Abrir programa en python desde php
« Reply #5 on: Febrero 27, 2015, 01:36:36 am »
Hola:

No digo que deje de funcionar, digo que funcionará, pero en el servidor. De nada le sirve a un usuario que se le abra una ventana en el servidor que no ve.

En el enlace que te pase pone en php como mover esos ficheros subidos a la carpeta que tú quieras, no necesitas un script aparte, puedes hacerlo con php mismo.

Se bueno.

biochemistry43

  • Jr. Member
  • **
  • Posts: 68
  • Karma: 0
    • View Profile
Re: Abrir programa en python desde php
« Reply #6 on: Febrero 27, 2015, 09:33:56 pm »
Bueno... increiblemente lo logré gracias a Dios.

La solución vino de una fuente inimaginable para mí.

Lo hice mediante una aplicación en JavaFX 2 y los nuevos webstart de java.

Hice una aplicación en Netbeans con java y cree el FileChooser de JavaFX 2, hice la programación propia para la copia de carpetas y eso es todo. El build de NetBeans ya genera automáticamente los archivos jnlp y html necesarios. Dichos archivos, los monté en el servidor y listo, funciona de maravilla.

Eso sí, es necesario modificar el java.policy, y esto deja un hueco de seguridad pero la aplicación que estamos desarrollando, no se conecta a internet para nada.

Si alguién quisiera mas detalles, puede enviarme un mensaje o un correo a jvazquezolivares@gmail.com

Saludos  y bendiciones a todos. Y gracias por su ayuda al usuario Chuidiang.
« Last Edit: Febrero 27, 2015, 10:02:41 pm by biochemistry43 »

 

ey