Foros del Web » Programando para Internet » PHP »

exec() desde el browser

Estas en el tema de exec() desde el browser en el foro de PHP en Foros del Web. Buen Dia... tengo un problema... si quiero ejecutar desde PHP una linea como ... exec ('gzip -d blablabla.gz'); y esto lo corro desde mi navegador... ...
  #1 (permalink)  
Antiguo 16/03/2004, 07:49
 
Fecha de Ingreso: febrero-2001
Ubicación: /home/mystery
Mensajes: 17
Antigüedad: 23 años, 1 mes
Puntos: 0
exec() desde el browser

Buen Dia... tengo un problema... si quiero ejecutar desde PHP una linea como ...

exec ('gzip -d blablabla.gz');

y esto lo corro desde mi navegador... nada pasa... si lo corro desde la consola si.

En Cambio... si corro algo como...

exec('pwd');

Anda barbaro.

Me llama mucho la atencion ya que es una app que habia desarrollado en un servidor y ahora que la migramos a uno mas potente, no funciona, y me quiero morir por que me estoy atrazando mucho con algo que ya funcionaba.

El servidor donde la app corre es un red hat 7.3, si no me equivoco... Corriendo apache, php y postgres. Es muy similar al servidor anterior. Pero bueno... Si alguien sabe algo, se lo agradeceria mucho.

Atte. Myst
  #2 (permalink)  
Antiguo 16/03/2004, 07:54
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Solo se me ocurre algun problema de permisos del usuario PHP (o Apache).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 16/03/2004, 09:06
 
Fecha de Ingreso: febrero-2001
Ubicación: /home/mystery
Mensajes: 17
Antigüedad: 23 años, 1 mes
Puntos: 0
Alguna idea para solucionarlo?
Documentacion?
Tips?
Experiencias?

Desde ya muchas gracias!

Atte. Myst
  #4 (permalink)  
Antiguo 16/03/2004, 09:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Documentación:
www.php.net/exec

Experiencias:
Los comentarios de los usuarios de esa función ...

Tips:
Ahí mismo

Más info .. usando el buscador del foro por esa función ...

Te puede sonar "seco" o "duro" mi respuesta ... pero es que todo lo que mencionas a alguien le suele haber pasado antes que a uno mismo y suele estar comentado en el manual oficial de PHP en su función o tema del grupo de funciones que usas en los comentarios de los usuarios ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 16/03/2004, 09:57
 
Fecha de Ingreso: febrero-2001
Ubicación: /home/mystery
Mensajes: 17
Antigüedad: 23 años, 1 mes
Puntos: 0
* Documentacion:
Deja mucho que desear.

* Experiencias:
Justamente, de mi caso no hay ni un solo comentario.

* Tips:
Muchos, pero ninguno relacionado a mi problema.

* Mas info:
En el foro hay 3 paginas de exec() pero ningun post soluciona mi caso.

Mi respuesta tambien te puede parecer un poco chocante, pero quizas me respondes asi por que no me conoces todavia, yo no voy a hacer perder el tiempo a los demas contestandome si en google pongo "exec() gzip" y me sale, o si en todos los foros que frecuento no busque primero en su buscador.

No se, te pido mil disculpas si con este mensaje te sentiste agredido, no fue mi intencion, solo pido un poco de ayuda y no respuestas obias como "busca en php.net"

Desde ya muchas gracias.

Atte. Myst
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo.
  #6 (permalink)  
Antiguo 16/03/2004, 11:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues ok... como no especificastes si ya has buscado información y aquí por lo menos se ven muchos casos de gente que no ha hecho lo que tu .. nunca está de más mencionarlo con el debido respeto.

----

Por lo demás .. sobre tus problemas:

Las funciones exec() .. system() y afines .. si te fijas en su sintax de uso suelen tener un parámetro extra por el cual devuelven la respuesta que pueda arrojar una ejecución de un comando sobre el S.O.

Si no ves el "error" que pueda estar probocando la ejecución de ese comando no vas a poder ver alguna solución así que lo mejor para comenzar a descartar problemas es intentar indentificar el error ...

Para eso, la misma función exec() dispone de un segundo parámetro:

Código PHP:
exec ('gzip -d blablabla.gz',$salida); 
$salida será un array .. así que puedes usar un simple print_r() para ver su valor .. o la recorres con cualquier bucle tipo de bucle ( foreach() .. etc).

Incluso tiene al parecer la función exec() un tercer parámetro para indicar el error concreto sobre la ejecución del comando ..

Un ejemplo extraido de los comentarios de los usuarios de dicha función:

Código PHP:
<?
#############
// $command="pwd";  //  <--- this produces no uotput
$command="ls -lazse";  //(bad command )<--- this produces, instead 
// an error in uotput
#############
$command_null="$command>/dev/null";
echo 
"<h2>ERROR FROM EXEC</h2>
$str
"
;
$str=exec($command_null,$arr,$err);
$std_err="2>&1";
if (
$err!=0){
echo 
"error:
"
;
$str=exec("$command $std_err",$arr,$err);
echo 
"$str
"
;
}
?>
pruebalo con tu comando y observa si ocasiona algun tipo de error o que salida está probocando (le faltaría hacer el print_r() minimo sobre $arr para ver la salida que pueda arrojar esa ejecución del comando).

Con algún error en la mano .. podrás ver la solución .. Tal vez te diga algo tipo "no tienen permiso para ejecutar el comando" o similar. En tal caso recuerda que PHP al salir al S.O. hereda los permisos del usuario de Apache (si está instalado como módulo de este) o de los asignados a PHP si está corriendo como CGI.

Tambien revisa este apartado del manual de PHP sobre el "backticks" por si te hace falta:
http://us2.php.net/manual/en/languag....execution.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 16/03/2004, 12:04
 
Fecha de Ingreso: febrero-2001
Ubicación: /home/mystery
Mensajes: 17
Antigüedad: 23 años, 1 mes
Puntos: 0
Buenas nuevamente...

Sabia de la existencia de los parametros del exec... pero no me resultaban muy conviencentes sus salidas...

Código PHP:
<?  
  $cmd 
"gzip -dv sxnovedad.20040310.suc36.67.gz";  
  
exec ($cmd$salida$error);  
  
print_r($salida);   
  echo 
"<br>";  
  echo 
$error;  
?>
Me mostraba tanto como esto...

Array ( [0] ==> )
0

Mucho no me decia... asi que le agrege 2>&1 luego del archivo gz.

Cosa que quedo algo asi...

Código PHP:
<?  
  $cmd 
"gzip -dv sxnovedad.20040310.suc36.67.gz 2>&1";  
  
exec ($cmd$salida$error);  
  
print_r($salida);   
  echo 
"<br>";  
  echo 
$error;  
?>
Esto me devolvio lo siguiente...

Array ( [0] => gzip: sxnovedad.20040310.suc36.67: Permission denied )
1

Me resulto muy extraño, ya que los permisos de ese archivo eran todos (777).

Asi que probe cambiandole los permisos al directorio... (777) le puse... y salio funcionando...

Segui probando... y le saque los permisos de escritura y ejecucion a todos menos al propietario... (744) y tambien anda...

Osea... necesitamos los permisos totales para el directorio... y al menos los de lectura para el usuario.

Quiero agradecerle a cluster por la ayuda brindada. Muchas Gracias.

Espero que este Post le sirva a alguien mas que a mi.

Atte. Myst
  #8 (permalink)  
Antiguo 16/03/2004, 12:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me alegro que solventaras tu problema.

Ahora podrías acudir a PHP.net en la sección de la función exec() y aportar tus experiencias .. Así el proximo que llegue con un problema así verá esos comentarios de los usuarios y resolverá su problema sin más.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 16:55.