Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php运行Shell脚本_Php_Linux_Apache_Shell_Docker - Fatal编程技术网

从php运行Shell脚本

从php运行Shell脚本,php,linux,apache,shell,docker,Php,Linux,Apache,Shell,Docker,我有一个在网上被问了很多次的问题,但是没有一个解决方案能帮助我解决这个问题 我需要一个非常简单的网站,有一个按钮,点击它,一个单一的shell命令执行部署一个docker容器 为此,我有3个文件,全部位于/var/www/html/: 1-Depl脚本(一个简单的Linux文件,由chmod+x和chmod 777执行,没有.sh扩展名,包括一个命令: docker run -it -p 8080:8080 surrogate 2-a DepGUI.php <?php // $outpu

我有一个在网上被问了很多次的问题,但是没有一个解决方案能帮助我解决这个问题

我需要一个非常简单的网站,有一个按钮,点击它,一个单一的shell命令执行部署一个docker容器

为此,我有3个文件,全部位于/var/www/html/:

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

docker run -it -p 8080:8080 surrogate
2-a 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;
?>
我注意到错误与docker有关,“输入设备不是TTY”,然后我在脚本(Dep脚本)中删除了docker命令中的-t,错误消失了。我得到了一个与docker权限有关的新错误,并使用以下链接解决了它:


shell exec
不是一个函数。你的意思是?你把shebang放在你的单行脚本上了吗?可能应该是包含它的两行脚本
#!/bin/bash
如果你可以用你的帐户执行脚本,而不能作为web服务器,我建议你:[1]重定向STDERR:2>&1[2]检查是否允许www数据执行命令(在docker组中)@tadman,谢谢你,那是一个打字错误。@Pavel Tvaladze,非常感谢你,你的提示救了我。我用你的数字[1]提示找到了错误。首先是相关的,使其非交互式,然后是第二个错误,与你的[2]提示有关,docker对当前用户的权限。
<form action="DepGUI.php">
    <input type="submit" value="Open Script">
</form>
$output=shell_exec("./Depl-Script 2>&1");