从PHP运行Bash命令

从PHP运行Bash命令,php,bash,exec,Php,Bash,Exec,我有一个bash脚本,通过命令行如下运行: ./script.sh var1 var2 在调用某个php文件之后,我尝试执行上述命令 我现在得到的是: $output = shell_exec("./script.sh var1 var2"); echo "<pre>$output</pre>"; $old_path = getcwd(); chdir('/my/path/'); $output = shell_exec('./script.sh var1 var2'

我有一个bash脚本,通过命令行如下运行:

./script.sh var1 var2
在调用某个php文件之后,我尝试执行上述命令

我现在得到的是:

$output = shell_exec("./script.sh var1 var2");
echo "<pre>$output</pre>";
$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);
$output=shell_exec(“./script.sh var1 var2”);
回显“$output”;
但它不起作用。我也使用
exec
system
进行了尝试,但脚本从未执行过

但是,当我尝试运行
shell_exec(“ls”)
它确实有效,
$output
是所有文件的列表


我不确定这是因为我正在使用的VPS的限制,还是问题出在其他地方?

您的shell_exec是由www数据用户从其目录执行的。 你可以试试

$output = "<pre>".shell_exec("scriptname v1 v2")."</pre>";
echo $output;
脚本位于/home/user/bin中的位置 以后你可以

$output=”“.shell_exec(“scriptname v1 v2”);
echo$输出;
显示命令的输出。(或者,在不导出路径的情况下,尝试给出脚本的整个路径,而不仅仅是。/script.sh

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


检查您是否没有在php.ini或.htaccess中设置您所使用的域的open_basedir。这会将您囚禁在域的目录中,php将只能在该目录中执行。

您运行它的路径是什么?pwd返回什么?您的脚本是否可由
apache
www-data
用户执行?Ibash脚本是否与PHP脚本位于同一目录中?PHP脚本的工作目录是否也与PHP脚本位于同一目录中?脚本是否具有适当的解释器头,是否可以从终端手动运行它?例如:
#!/bin/bash
它是否与
shell\u exec('sh script.sh')一起工作
?无需更改
路径
环境变量。应改为更改当前工作目录(请参阅).True。谢谢。我在代码中使用了路径设置,因为我在多个位置有各种自定义可执行文件,我希望输入框可以用作控制台,这样我就可以从这些位置调用任何命令。如果它仅用于单文件执行,我们可以使用shell_exec(“/thill/path/to/file/”);我想这就成功了!至少我使用了一个简单的测试脚本。为了最终验证它,我必须等待服务器宿主让我知道脚本的确切路径。尽管如此,我现在还是要标记答案。谢谢!@Andrej:或者使用脚本的绝对路径而不是相对路径。@Andrej如果您运行的是PHP 5.3,您可以使用
chdir(\uuuu DIR\uuuuu)
将目录更改为包含脚本的目录。或者对于PHP5.2或更低版本,
dirname(\uuuu FILE\uuuuuuu)
将完成此任务。谢谢大家!它现在正在工作。出现了一个问题,但这个问题已经解决了;)如果您想简单地交换
shell\u exec
$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);