Foros del Web » Programando para Internet » PHP »

fallos con exec() y shell_exec()

Estas en el tema de fallos con exec() y shell_exec() en el foro de PHP en Foros del Web. Buenas! Soy un novato completamente con PHP, pero tengo que hacer uso de él para ejecutar algunos comandos en un sistema Linux a traves de ...
  #1 (permalink)  
Antiguo 08/09/2013, 10:03
 
Fecha de Ingreso: septiembre-2013
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
fallos con exec() y shell_exec()

Buenas! Soy un novato completamente con PHP, pero tengo que hacer uso de él para ejecutar algunos comandos en un sistema Linux a traves de una interfaz web.

Despues de muchos intentos fallidos intentando ejecutar un comando concreto, se me ocurrio la idea de ejecutar mediante shell_exec(), un script '.sh' y que este ejecutara el comando definitivo, pero ni uno ni el otro funcionan.

Os pongo el codigo que tengo :

Código:
<?
if(isset($_GET["op"])){
        $selec=$_GET["op"];

        if ($selec=="0.0"){
                shell_exec("./initragga.sh");
                exec("mpg123 -z -@ reggae.m3u -q &");
        }
?>
Dentro del script 'initragga.sh' se encuentra el mismo comando :

Código:
#!/bin/bash
cmd="mpg123 -z -@ reggae.m3u -q"
$cmd
Tanto la instruccion : shell_exec("./initragga.sh");
como exec("mpg123 -z -@ reggae.m3u -q &");

no se ejecutan nunca. Alguien podria echarme una mano?
Gracias!
  #2 (permalink)  
Antiguo 08/09/2013, 10:17
Avatar de macmaikel  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 7 meses
Puntos: 5
Respuesta: fallos con exec() y shell_exec()

hola!

No tendras que poner el path completo?

algo como shell_exec("./home/user/documents/scripts/initragga.sh");


Saludos
  #3 (permalink)  
Antiguo 08/09/2013, 10:24
 
Fecha de Ingreso: septiembre-2013
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: fallos con exec() y shell_exec()

Cita:
Iniciado por macmaikel Ver Mensaje
hola!

No tendras que poner el path completo?

algo como shell_exec("./home/user/documents/scripts/initragga.sh");


Saludos
Hola! Pues en teoria no, ya que el tanto los archivos initragga.sh y reggae.m3u se encuentran en el directorio /var/www/ que es el directorio por defecto del servicio web.

Gracias por responder tan rapido! Un saludo.
  #4 (permalink)  
Antiguo 08/09/2013, 10:30
Avatar de macmaikel  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 7 meses
Puntos: 5
Respuesta: fallos con exec() y shell_exec()

y estan al mismo nivel que el fichero que los ejecuta?
  #5 (permalink)  
Antiguo 08/09/2013, 10:37
 
Fecha de Ingreso: septiembre-2013
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: fallos con exec() y shell_exec()

Cita:
Iniciado por macmaikel Ver Mensaje
y estan al mismo nivel que el fichero que los ejecuta?
Exacto! El codigo .php que he puesto arriba se encuentra exactamente en /var/www/init.php
  #6 (permalink)  
Antiguo 08/09/2013, 10:41
Avatar de macmaikel  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 7 meses
Puntos: 5
Respuesta: fallos con exec() y shell_exec()

Pues no se... has comprobado que realmente entra en el bucle? es decir que se da el caso de que $_GET["op"] es 0.0 ?
  #7 (permalink)  
Antiguo 08/09/2013, 10:44
 
Fecha de Ingreso: septiembre-2013
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: fallos con exec() y shell_exec()

Cita:
Iniciado por macmaikel Ver Mensaje
Pues no se... has comprobado que realmente entra en el bucle? es decir que se da el caso de que $_GET["op"] es 0.0 ?
Si, habia puesto justo despues de 'exec()', el comando echo("Realizado"); y efectivamente se mostraba la palabra, pero el comando exec() no se ejecutaba... Estoy desesperado
  #8 (permalink)  
Antiguo 08/09/2013, 10:54
Avatar de macmaikel  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 7 meses
Puntos: 5
Respuesta: fallos con exec() y shell_exec()

Has probado con system() a ver si asi te funciona? #dandoPalosDeCiego
  #9 (permalink)  
Antiguo 08/09/2013, 12:48
 
Fecha de Ingreso: septiembre-2013
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: fallos con exec() y shell_exec()

Cita:
Iniciado por macmaikel Ver Mensaje
Has probado con system() a ver si asi te funciona? #dandoPalosDeCiego
Acabo de hacerlo, y ahora ya si que me doy casi por vencido...

Código:
$ultima_linea = system('ls -l', $retval);
                echo "$ultima_linea";
Este es el codigo que he probado, usando el comando 'ls -l' todo funciona a la perfeccion, me muestra todos los archivos y directorios, viene a ser el comando 'DIR' en windows.

Pero cuando lo pruebo con mi comando : 'mpg123 -z -@ reggae.m3u -q &', no pasa nada.

Me explico, con este comando lo que consigo es recibir una radio streaming, de tal manera que se inicia un proceso en el sistema. Por lo que deberia escucharse algo por la tarjeta de sonido.

El comando es totalmente funcional, lo he probado 'a pelo' en la consola y se inicia como es debido.

Gracias por las respuestas!


EDIT:

Al final he podido encontrar una alternativa via SSH, tendre que renunciar a la interfaz web almenos hasta que de con la solucion. Gracias MacMaikel!

Última edición por mscdroid; 08/09/2013 a las 13:01 Razón: Solucion encontrada

Etiquetas: exec, fallos
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 01:01.