从php运行一个shell脚本

我有一个问题,很多networking上被问过,但没有任何解决scheme帮助我的情况。

我需要一个非常简单的网站,只需点击一下button,就可以执行一个shell命令来部署Docker容器。

为此我有3个文件都位于/ var / www / html /中:

1- Depl-Script(一个简单的Linux文件,由chmod + x和chmod 777执行,不包含.sh扩展名,包括一个命令:

docker run -it -p 8080:8080 surrogate 

2-一个DepGUI.php

 <?php // $output=shell-exec("/var/www/html/Depl-Script"); //didn't work $output=shell_exec("./Depl-Script"); //this doesn't work neither echo $output; //prints 0 $output1=shell_exec("whoami"); //prints www-data echo $output1; ?> 

3-一个Main.html,包括:

 <form action="DepGUI.php"> <input type="submit" value="Open Script"> </form> 

Shell-exec不能用于运行shell脚本。 我怎么知道这是行不通的? 我检查docker容器,没有创build。

我曾经尝试过的解决scheme

1)当我从root用户运行它时,shell脚本(Dep-Script)工作正常。

2)为了确保,我更改了etc / passwd文件,find了www-data用户的行,并将其loginshell更改为/ bin / bash,然后通过www-data(apache)用户执行了相同的shell脚本,它的作品。 (我将/ etc / passwd文件返回到原始形状)

3)我检查了/etc/php5/apache2/php.ini和/etc/php5/cli/php.ini以及exec,并且shell_exec未被禁用。

4)我用“sh”参数检查了shell-exec和exec命令,它没有工作。

任何帮助/评论提前赞赏。 谢谢

更新:

我将错误redirect到输出,

 $output=shell_exec("./Depl-Script 2>&1"); 

我注意到这个错误与docker有关,“input设备不是TTY”,然后我在脚本(Dep-Script)的docker命令中删除了-t,错误消失了。 我得到了一个新的与docker权限相关的错误,并使用以下链接解决它:

Solving Docker permission denied while trying to connect to the Docker daemon socket