如何从php运行.sh文件?

如何从php运行.sh文件?,php,Php,我正在尝试使用php运行一个shell脚本 shell脚本(/home/scripts/fix-perm.sh)位于同一服务器中 这是我正在尝试的代码 <?php echo shell_exec('/home/scripts/fix-perm.sh'); ?> 上述代码不起作用 我正在使用linux服务器 有人能帮我吗?Shell exec接受一个字符串,该字符串必须是实际命令。您现在正在向它传递一个文件路径。这不会解释为“在此路径执行文件”。你可以做几件事 您需要做的是用程序

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

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

这是我正在尝试的代码

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

上述代码不起作用

我正在使用linux服务器


有人能帮我吗?

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);
不过,我认为第一种选择会更好


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

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

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

在您的服务器上
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&')

它是返回错误还是什么都不做?是否抛出权限错误?php脚本在哪个用户下运行?请提供更多信息。您可能还想尝试执行“bash/home/scripts/fix perm.sh”,假设它是bash脚本。它不显示任何类似于/bin/bash的-->shell_exec(“/bin/bash/var/www/html/roshan.sh”);我建议两者都不要做。使文件可执行更干净。我尝试了这两种方法,但都没有显示任何内容,它会返回任何结果吗?如何确定它是否工作?shell_exec返回命令生成的输出。如果您的脚本没有输出任何内容,将不会有任何输出:)@Jan我不同意,调用解释器更为明确。@IslandCow:“chicken”是scheme的一个版本。我不懂任何叫“鸡蛋”的语言。这是一个随机占位符,代表我从未听说过的与“鸡”押韵的任何其他语言:-)