2011-09-13 235 views
10

Estoy tratando de ejecutar un script en phpcómo ejecutar un archivo .sh desde php?

script de shell (/home/scripts/fix-perm.sh) se encuentra en el mismo servidor

este es el código que estoy tratando

<?php 
echo shell_exec('/home/scripts/fix-perm.sh'); 
?> 

el código anterior no está funcionando

estoy usando servidor Linux

puede alguien ayudarme por favor?

+5

¿Está devolviendo un error o simplemente no está haciendo nada? ¿Lanza un error de permisos? ¿En qué usuario se ejecuta el script php? Más información por favor. También es posible que desee intentar ejecutar 'bash /home/scripts/fix-perm.sh' suponiendo que es un script bash. – IslandCow

+0

no muestra nada – NidhinRaj

Respuesta

20

Shell exec toma una cadena que debe ser un comando real. Ahora le está pasando un filepath. Esto no se interpreta como "ejecutar el archivo en esta ruta". Podrías hacer varias cosas.

Lo que necesita hacer es llamar al archivo con un programa. Llamarlo con bash o sh como se sugiere en el comentario:

echo shell_exec('sh /home/scripts/fix-perm.sh'); 

Otra opción podría ser:

$contents = file_get_contents('/home/scripts/fix-perm.sh'); 
echo shell_exec($contents); 

Creo que la primera opción sería mejor sin embargo.

Es importante tener en cuenta que todos los comandos para ejecutar programas externos esperan comandos reales y no un camino de archivo u otra cosa. Esto va para shell_exec, exec, passthru y otros.

+0

Sugiero no hacerlo. Hacer el archivo ejecutable es mucho más limpio. –

+0

intenté ambos, pero no muestra nada, ¿devolverá algún resultado? cómo saber si funciona o no? – NidhinRaj

+0

shell_exec devuelve el resultado que genera un comando. Si su script no genera nada, no habrá salida :) – hoppa

Cuestiones relacionadas