从 PHP 运行 Bash 命令

2022-08-30 08:55:27

我有一个bash脚本,我通过命令行像这样运行:

./script.sh var1 var2

我正在尝试执行上述命令,在我调用某个php文件后。

我现在拥有的是:

$output = shell_exec("./script.sh var1 var2");
echo "<pre>$output</pre>";

但它不起作用。我也尝试过,但脚本从未被执行过。execsystem

但是,当我尝试运行时,它确实有效,并且是所有文件的列表。shell_exec("ls");$output

我不确定这是由于我正在使用的VPS的限制还是问题在其他地方?


答案 1

在调用脚本之前,您可能需要将 chdir 调到正确的目录。这样,在调用 shell 命令之前,您可以确保脚本“位于”哪个目录。

$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);

答案 2

您的shell_exec由 www-data 用户从其目录中执行。您可以尝试

putenv("PATH=/home/user/bin/:" .$_ENV["PATH"]."");

你的脚本在 /home/user/bin 中的位置 稍后你可以

$output = "<pre>".shell_exec("scriptname v1 v2")."</pre>";
echo $output;

显示命令的输出。(或者,在不导出路径的情况下,尝试提供脚本的整个路径,而不仅仅是 ./script.sh


推荐