Foros del Web » Programación para mayores de 30 ;) » Programación General »

[SOLUCIONADO] Abrir programa C en php

Estas en el tema de Abrir programa C en php en el foro de Programación General en Foros del Web. Hola, ya hace tiempo que lo estoy intentando y siempre abondo, hora ya hace uno días que retome nuevamente el tema pero la verdad me ...
  #1 (permalink)  
Antiguo 20/06/2015, 23:03
 
Fecha de Ingreso: octubre-2010
Ubicación: Uruguay
Mensajes: 23
Antigüedad: 9 años
Puntos: 1
Abrir programa C en php

Hola, ya hace tiempo que lo estoy intentando y siempre abondo, hora ya hace uno días que retome nuevamente el tema pero la verdad me resulta imposible de solucionar y ante la desesperación decidí acudir a ustedes para ver si de una vez por todas lo puedo solucionar.

El tema es el siguiente, quiero abrir un programa escrito en lenguaje C (pj: ejemplo.exe) usando PHP.

Por todas partes vi que usan la función de php exec() pero a mi no me funciona, la forma en que lo utilizo es esta:

Código PHP:
Ver original
  1. exec("C:\wamp\www\lpt\prueba.exe");

y no me funciona, también lo use asi:

Código PHP:
Ver original
  1. exec("prueba.exe");

y tampoco funciona.

Lo curioso es que si pongo para que me habra el programa picdel_sp.exe (programa para generar retardos en microcontroladores PIC) que es un programita que pesa 185kb y no viene con instalador, me lo habre sin problemas.

Lo que estoy probando ahora que es un código que encontré en la web es este:

Código PHP:
Ver original
  1. $result = exec("./prueba hola");
  2. echo $result;

y el programa en C es este:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. main(int argc, char *argv[]){
  4.        
  5. char* mensaje;
  6.  
  7.     if(argc > 0)
  8.     {
  9.         mensaje = argv[1];
  10.  
  11.         printf("<H1>Ejecutar archivos C desde php</H1>");
  12.         printf("Prueba de envio de parametros desde php<br>");
  13.         printf("El mensaje es: %s<br>",mensaje);
  14.  
  15.     }
  16.     else
  17.         printf("Error: argumentos no validos\n");//getchar();
  18. return 1;
  19.  
  20. }


Pero tampoco me funciona.

Le agradecería que me digan que puede estar pasando que no me funciona.

Gracias!!!!!

p/d: Utilizo Windows XP y wampserver 2.1
  #2 (permalink)  
Antiguo 22/06/2015, 12:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Abrir programa C en php

¿Qué quiere decir que no te funciona? Explica qué estás esperando que haga el programa, y qué mensaje de error ves, si es que ves alguno.
  #3 (permalink)  
Antiguo 22/06/2015, 17:01
 
Fecha de Ingreso: octubre-2010
Ubicación: Uruguay
Mensajes: 23
Antigüedad: 9 años
Puntos: 1
Respuesta: Abrir programa C en php

Cita:
Iniciado por AlvaroG Ver Mensaje
¿Qué quiere decir que no te funciona? Explica qué estás esperando que haga el programa, y qué mensaje de error ves, si es que ves alguno.

Hola, en el archivo PHP pongo esto:

Código PHP:
Ver original
  1. <?php
  2. $result = exec("./prueba hola");
  3. echo $result;
  4. ?>

Y el programa en C tiene esto:

Código C:
Ver original
  1. #include <stdio.h>
  2.  main(int argc, char *argv[]){
  3. char* mensaje;
  4.     if(argc > 0)
  5.     {
  6.   mensaje = argv[1];
  7.          printf("<H1>Ejecutar archivos C desde php</H1>");
  8.         printf("Prueba de envio de parametros desde php<br>");
  9.         printf("El mensaje es: %s<br>",mensaje);
  10.      }
  11.     else
  12.         printf("Error: argumentos no validos\n");//getchar();
  13. return 1;
  14.  }

Cuando abro el archivo PHP en el wamp, no se ve nada, ni un mensaje de error, se ve todo blanco.

La idea es que en el navegador se vea lo que me devulve el programa C, que seria esto:

Código HTML:
Ver original
  1. <H1>Ejecutar archivos C desde php</H1>
  2.         Prueba de envio de parametros desde php<br>
  3.         El mensaje es: hola


Pero se ve el navegador en blanco, no devuelve nada
  #4 (permalink)  
Antiguo 22/06/2015, 17:02
 
Fecha de Ingreso: octubre-2010
Ubicación: Uruguay
Mensajes: 23
Antigüedad: 9 años
Puntos: 1
Respuesta: Abrir programa C en php

Cita:
Iniciado por AlvaroG Ver Mensaje
¿Qué quiere decir que no te funciona? Explica qué estás esperando que haga el programa, y qué mensaje de error ves, si es que ves alguno.

Hola, en el archivo PHP pongo esto:

Código PHP:
Ver original
  1. <?php
  2. $result = exec("./prueba hola");
  3. echo $result;
  4. ?>

Y el programa en C tiene esto:

Código C:
Ver original
  1. #include <stdio.h>
  2.  main(int argc, char *argv[]){
  3. char* mensaje;
  4.     if(argc > 0)
  5.     {
  6.   mensaje = argv[1];
  7.          printf("<H1>Ejecutar archivos C desde php</H1>");
  8.         printf("Prueba de envio de parametros desde php<br>");
  9.         printf("El mensaje es: %s<br>",mensaje);
  10.      }
  11.     else
  12.         printf("Error: argumentos no validos\n");//getchar();
  13. return 1;
  14.  }

Cuando abro el archivo PHP en el wamp, no se ve nada, ni un mensaje de error, se ve todo blanco.

La idea es que en el navegador se vea lo que me devulve el programa C, que seria esto:

Ejecutar archivos C desde php
Prueba de envio de parametros desde php
El mensaje es: hola


Pero se ve el navegador en blanco, no devuelve nada
  #5 (permalink)  
Antiguo 22/06/2015, 17:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.318
Antigüedad: 11 años, 10 meses
Puntos: 2653
Respuesta: Abrir programa C en php

Cuando hablas de "ejecutar un programa en C",estamos hablando siempre de un programa escrito en C, ya correctamente compilado, ¿no?
Pregunto sólo para confirmar, porque que yo sepa C no es un lenguaje interpretado.

Si lo tienes compilado,¿has probado ejecutarlo en consola para asegurarte que funciona bien?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 22/06/2015, 21:29
 
Fecha de Ingreso: octubre-2010
Ubicación: Uruguay
Mensajes: 23
Antigüedad: 9 años
Puntos: 1
Respuesta: Abrir programa C en php

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Cuando hablas de "ejecutar un programa en C",estamos hablando siempre de un programa escrito en C, ya correctamente compilado, ¿no?
Pregunto sólo para confirmar, porque que yo sepa C no es un lenguaje interpretado.

Si lo tienes compilado,¿has probado ejecutarlo en consola para asegurarte que funciona bien?

Hola, el programa creo que esta bien compilado, el codigo C que escribi lo pegue en el Dev-C++ y despues di compilar y me genero el .exe.

Despues le doy doble clic al archivo compilado y se abre sin problemas.

Ejecutarlo en consola significa abrirlo con el "simbolo de sistema" en el windows XP?
Si es asi tambien funciona el programa.

Por las dudas coloco el enlace al archivo para que lo prueben:

http://tabam.site90.net/prueba.rar
  #7 (permalink)  
Antiguo 22/06/2015, 22:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.318
Antigüedad: 11 años, 10 meses
Puntos: 2653
Respuesta: Abrir programa C en php

Bueno, si entiendo bien el manual de PHP, el comando que deberías usar es shell_exec (), no exec().
Si quieres usar exec(), la salida se almacenaría en un array que debes colocar como segundo parámetro, cosa que no haces.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 22/06/2015, 23:12
 
Fecha de Ingreso: octubre-2010
Ubicación: Uruguay
Mensajes: 23
Antigüedad: 9 años
Puntos: 1
Respuesta: Abrir programa C en php

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, si entiendo bien el manual de PHP, el comando que deberías usar es shell_exec (), no exec().
Si quieres usar exec(), la salida se almacenaría en un array que debes colocar como segundo parámetro, cosa que no haces.
Hola, no lo puedo creer pero después de tanto tiempo funciono, lo que hice fue sacarle el punto y la barra invertida que están antes de la palabra “prueba”:

Antes
$result = exec("./prueba hola");

Ahora
$result = exec("prueba hola");

No se porque pero de los 2500 intentos que había echo para que funcionara (poner rutas relativas y absolutas al archivo, agregar y quitar variables a la función etc etc..) me dio la sensación que ya le había sacado el punto y la barra pero capaz que le hacia otra modificación y era justamente esta modificación la que hacía que no funcionara.

Pero bueno, después de buscar mucho por internet tuve que crear este post en el foro para que funcionara.

Gracias a todos, saludos!!!!

p/d: Usando un array seria asi:


Código PHP:
Ver original
  1. $array=array();
  2. $result = exec("prueba hola ",$array);
  3. echo $result;
  4. var_dump($array);

Y en el navegador se ve esto:
  #9 (permalink)  
Antiguo 23/06/2015, 03:41
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 6 años, 10 meses
Puntos: 16
Respuesta: Abrir programa C en php

Eso es por que en Windows para llamar a un programa no se pone el "./". Eso es en Linux (aunque las rutas absolutas deberían haber funcionado, creo -o lo mismo lo estaba tomando como relativas y pensaba que estabas refiriéndote a una carpeta llamada "C:/....." dentro de la carpeta en la que ya estabas-).

Etiquetas: php, servidores-web, wampserver
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




La zona horaria es GMT -6. Ahora son las 14:45.