如何从php运行.sh文件?

时间:2011-09-13 06:27:48

标签: php

我正在尝试使用php运行shell脚本

shell脚本(/home/scripts/fix-perm.sh)位于同一服务器

这是我正在尝试的代码

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

以上代码无效

我正在使用linux服务器

任何人都可以帮帮我吗?

3 个答案:

答案 0 :(得分:22)

Shell exec需要一个需要作为实际命令的字符串。您现在正在传递一个文件路径。这不会被解释为“在此路径上执行文件”。你可以做几件事。

您需要做的是使用程序调用该文件。按照评论中的建议用bash或sh调用它:

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

另一种选择可能是:

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

我认为第一种选择会更好。

请务必注意,执行外部程序的所有命令都需要实际命令,而不是文件路径或其他命令。这适用于shell_execexecpassthru和其他人。

答案 1 :(得分:1)

我不确定,但是您可以先在服务器上尝试使用chmod +x /home/scripts/fix-perm.sh,然后再尝试...

答案 2 :(得分:0)

首先,您需要确保文件具有正确的权限

在服务器chmod u+x /home/scripts/fix-perm.sh

然后运行:echo shell_exec('sh /home/scripts/fix-perm.sh');

或者如果要将结果输出到txt文件中:

shell_exec('sh /home/scripts/fix-perm.sh > /home/scripts/log.txt &');