从PHP运行Bash命令

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

./script.sh var1 var2 

我正在尝试执行上述命令后,我打电话给某个PHP文件。

我现在所拥有的是:

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

但它不工作。 我也使用execsystem来尝试它,但脚本从来没有得到执行。

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

我不知道这是否是因为我使用的VPS的限制,或者如果问题在别的地方?

调用脚本之前,您可能需要chdir到正确的目录。 通过这种方式,您可以在调用shell命令之前确保脚本是“in”的目录。

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

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

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

脚本位于/ home / user / bin的位置稍后可以

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

显示命令的输出。 (另外,如果没有导出path,请尝试给脚本的整个path,而不是仅仅./script.sh

检查是否没有在你使用的php.ini或.htaccess中设置open_basedir。 这将监禁你的域名目录和PHP将只获得执行这个目录内。