Foros del Web » Programando para Internet » PHP »

exec() no hay manera :no:

Estas en el tema de exec() no hay manera :no: en el foro de PHP en Foros del Web. Tengo un scritp en linux, este: Código: sed 's/Á/\Á/g ;s/É/\É/g ;s/Í/\Í/g ;s/Ó/\Ó/g ;s/Ú/\Ú/g ;s/á/\á/g ;s/é/\é/g ;s/í/\í/g ;s/ó/\ó/g ;s/ú/\ú/g ;s/ñ/\ñ/g ;s/,/\,/g' $1 > $2 En la ...
  #1 (permalink)  
Antiguo 04/10/2004, 17:56
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
exec() no hay manera :no:

Tengo un scritp en linux, este:

Código:
sed 's/Á/\Á/g ;s/É/\É/g ;s/Í/\Í/g ;s/Ó/\Ó/g ;s/Ú/\Ú/g ;s/á/\á/g ;s/é/\é/g ;s/í/\í/g ;s/ó/\ó/g ;s/ú/\ú/g ;s/ñ/\ñ/g ;s/,/\,/g' $1 > $2
En la linia de comandos de linux, me funciona a la perfeción, incluso lo tengo en el "/sbin", asi q lo ejecuto asi:

script archivo1 archivo2

y hace lo q tiene q hacer

pero cuando lo intento aplicar en php, simplemente no funciona

Cambie el safe_mode, lo puse en On, le indique la ruta donde estan los ejecutables q quierón q se puedan ejecutar desde php

a la carpeta, donde estan los archivos le di permisos 777 y le puse de usuario "apache" y q las subcarpetas y ficheros erasen los permisos, en esta carpeta tengo el script y el fichero en el cual quiero q se realicen los cambios, este es el codigo q utilizo:

Código PHP:
<?php
$arch1 
"prueba.txt";
$arch2 "destino.txt";
chdir("/rutadelscript/");
exec("./script " .$arch1." ".$arch2);
echo 
getcwd() . "\n";
?>
el chdir() funciona, me situa en el directorio, donde esta el script y el getcwd(), tb, pero el exec, no y ya no se q hacer, alguna idea? gracias de antemano.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 05/10/2004, 01:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

No se si te habras fijado en esto (www.php.net/exec):
Cita:
With safe mode enabled, all words following the initial command string are treated as a single argument. Thus, echo y | echo x becomes echo "y | echo x".
Asi que puede que tu comando lo este tomando como script "arch1 arch2".

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 05/10/2004, 05:56
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
E cambiado el codigo, pero sigue haciendo lo mismo:

Código PHP:
<?php 
$arch1 
"prueba.txt"
$arch2 "destino.txt"
chdir("/rutadelscript/"); 
$comando "./script " .$arch1." ".$arch2;
echo 
getcwd() . "\n";
echo 
"<br>";
echo 
$comando;
echo 
"<br>";
exec($comando);
?>

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #4 (permalink)  
Antiguo 05/10/2004, 07:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Creo que eso no cambia nada. Prueba a desactivar el safe_mode.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 05/10/2004, 07:15
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Eureka!!! funciono, pero estaria bien tener el modo seguro activado, como podria hacerlo igualmente josemi, muchas gracias, con esto me va afacilitar mucho las cosas
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #6 (permalink)  
Antiguo 05/10/2004, 07:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Es que parece que en safe mode, coge todo lo que no sea el nombre del comando como un solo parametro. Tendrias que modificar tu script del shell para que de ese unico parametro saque los valores (no se si puedes hacer un explode en el shell).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 27/10/2004, 05:34
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Hola, vuelvo con este tema, pq modifique una cosa y dejo de ir, yo tengo este archivo, y lo incluyo en el codigo mediante un include, este el codigo:

Código PHP:

<?

$arch1 
"/ruta/".$var1;
$arch2 "/ruta/".$var2;

chdir("/ruta/");

$comando "./script ".$arch1." ".$arch2;


exec($comando);
?>
bueno asi lo tenia, y funcionaba, el caso es que de esta manera, me creaba los archivos en una carpeta, pero para darle mas juego y dependiendo del archivo queria q me lo guardase en un una carpeta diferentedentro de la misma ruta, asi q probe lo siguiente:


Código PHP:

$arch1 
"/ruta/".$carpeta."/".$var1;
$arch2 "/ruta/".$carpeta."/".$var2

pero nada

como este archivo es un include, probe a meter las variables en la pagina padre:

Código PHP:

$var1 
$carpeta."/".$var1;
$var2 $carpeta."/".$var2;

## asi el include, me qdaba como antes:

$arch1 "/ruta/".$var1;
$arch2 "/ruta/".$var2
pero nada de nada, alguna idea

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
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 04:16.