我正在尝试使用php运行shell脚本
shell脚本(/home/scripts/fix-perm.sh)位于同一服务器
中这是我正在尝试的代码
<?php
echo shell_exec('/home/scripts/fix-perm.sh');
?>
以上代码无效
我正在使用linux服务器
任何人都可以帮帮我吗?
答案 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_exec,exec,passthru和其他人。
答案 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 &');