如何从php运行.sh文件


how to run a .sh file from php?

我正在尝试使用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);

我认为第一个选项会更好。

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

我不确定,但你可以尝试在服务器上使用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 &');

我有一个类似的问题,即使我读了所有的帖子。我想执行一个文件。sh的路径到另一个文件夹,并保持结果在我的php页面(我不想关闭。sh,因为它正在寻找css的变化)。这里是我尝试的,但php端没有附加任何内容:

    <?php
    echo '<html><head>';
    echo'</head><body>';
        shell_exec('/bin/sh ../include/makeCss/makeWatch.sh'); 
    echo '</body></html>';
?>

和makeWatch.sh

 #!/bin/bash
sudo compass watch