Foros del Web » Programando para Internet » PHP »

Abrir archivo sh con shell_exec()

Estas en el tema de Abrir archivo sh con shell_exec() en el foro de PHP en Foros del Web. Buenas chicos! Hace tiempo ya intenté resolver una de mis dudas de ejecutar un comando "ant" desde una página php, y me dieron una buena ...
  #1 (permalink)  
Antiguo 07/01/2014, 03:46
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Abrir archivo sh con shell_exec()

Buenas chicos!

Hace tiempo ya intenté resolver una de mis dudas de ejecutar un comando "ant" desde una página php, y me dieron una buena idea:

He creado un archivo .sh donde este mismo ejecuta este comando "ant" nombrado anteriormente.

Entonces, mi intención es abrir, mediante la función shell_exec() de php el archivo .sh , pero no funciona ( o almenos, no se ver si funciona o no. )

He hecho un archivo .sh con el siguiente código:

Código:
 ( archivo prueba.sh )

#!/bin/bash
# -*- ENCODING: UTF-8 -*-

echo "FUNCIONA CORRECTAMENTE";

exit
y un archivo php con el siguiente código:

Código PHP:

echo "<br>A ver si funciona...<br>";

$prueba shell_exec('./prueba.sh');

echo 
$prueba
Entonces, cuando ejecuto el archivo php, solo aparece en pantalla la frase "A ver si funciona...", que es la que esta en el echo del código php.

He probado de ejecutar el archivo .sh desde el terminal y si funciona de forma correcta.

Me gustaria saber a ver si alguien puede ayudarme, ya que cuando sepa que el archivo .sh se ejecuta y funciona de forma correcta podré avanzar en mi proceso de creación de una parte de una web.

Gracias por todo!

Un saludo y feliz 2014 a todos!
  #2 (permalink)  
Antiguo 07/01/2014, 05:08
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Abrir archivo sh con shell_exec()

el shell_exec te devuelve lo que saldria en la consola, si hay algun error la variable $prueba te devolveria NULL, hace un if validando el valor de $prueba es null.
El archivo sh esta en el mismo directorio que que el archivo php, proba con poner toda la ruta completa al archivo sh.
  #3 (permalink)  
Antiguo 07/01/2014, 05:24
 
Fecha de Ingreso: diciembre-2012
Mensajes: 75
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Abrir archivo sh con shell_exec()

También deberías controlar el tema de permisos del script y quien puede ejecutarlo ya que si lo vas a ejecutar desde web el usuario que lo va a ejecutar es www-data por lo menos en el caso de Apache que es lo que yo uso.
  #4 (permalink)  
Antiguo 09/01/2014, 05:30
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Abrir archivo sh con shell_exec()

Hola chicos!

Como me habeis dicho anteriormente, he optado por mirar con la función isset si existia la variable $prueba, y no lo coge, es decir:

Código PHP:

$prova2 
shell_exec('./prova.sh');

if (isset(
$prova2)) echo "Funciona";

else echo 
"No funciona"

Y me sale el mensaje "No funciona"...

Puede ser porque la dirección del archivo esta mal?no sabria que dirección ponerle, ya que lo estoy probando en un servidor que tengo en mi pc, donde la carpeta raíz donde estan los archivos es la "www".

No sabria como poner eso en la funcion shell_exec..


A ver si alguien sabe porque puede ser, gracias.

Alex
  #5 (permalink)  
Antiguo 09/01/2014, 05:34
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Abrir archivo sh con shell_exec()

Vale, he encontrado una solución!

Fallaban los permisos, el archivo no tenia permiso de ejecución!

Ahora deberia ponerle permisos de ejecución al archivo!
  #6 (permalink)  
Antiguo 13/01/2014, 09:18
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Abrir archivo sh con shell_exec()

Buenos dias chicos! Finalmente he conseguido abrir los archivos .sh de forma correcta con el shell_exec.

Ahora el problema es que, al abrir este archivo, dependiendo lo que tenga escrito, me funciona o no...

Para comprovar en el archivo php si el shell_exec funciona, utilizo el siguiente código:

Código PHP:

$prueba 
shell_exec('./archivo.sh');

if (!isset(
$prueba) echo "No funciona, el archivo no ha dado ningun resultado";

else

echo 
$prueba
Con este código y con un archivo .sh como el siguiente:

Código:
#!/bin/bash
# -*- ENCODING: UTF-8 -*-

echo "<br>Si, esto funciona!";

exit
Me funciona a la perfección...el problema viene cuando introduzco el siguiente código del archivo .sh, lo que me lleva a deducir que el problema es este código (aunque ejecutándolo desde el terminal, funciona perfectamente)

Código:

#!/bin/bash
# -*- ENCODING: UTF-8 -*-

// echo "Si descomentamos esta linea, si funciona";

ant -f run-client.xml -Dmode=x -Dapi=auth -Denv=uat

exit

Como podéis ver, tengo un "echo" comentado, ya que si lo descomento, la frase que ponga si me aparece correctamente, pero solo con el código del "ant -f run-client.xml ...." no me funciona, me sale el mensaje de error que he escrito en php.

Ya he probado de darle todos los permisos a todos los archivos (incluidos run-client.xml etc., que estan en el mísmo directorio que el archivo .sh)

A ver si alguien me puede ayudar, y perdonar por las moléstias y por el tamaño del parrafón!

Un saludo y gracias!!

Etiquetas: Ninguno
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 03:20.