php调用shell脚本

时间:2012-08-03 11:20:16

标签: php shell sudo minecraft

目的:使用php将命令直接输入到minecraft服务器控制台

我试图使用php脚本(从浏览器运行)来执行()shell脚本。当我从终端运行PHP时,它的工作原理!但是在浏览器中,没有任何反应。

exec('sudo -u root sh /home/minecraft/whitelist-reload.sh', $out, $ret_val);

从终端运行时,我得到一个“数组0”,但浏览器给我一个“数组1”

问题是什么? 并且一旦我运行shell,那么工作之后的所有内容都不应该就像你在终端上一样吗?(shell脚本里面的内容是否重要?)

shell具有所有rx权限,并且作为

位于sudoers文件中
www-data ALL = NOPASSWD: /home/minecraft/whitelist-reload.sh

2 个答案:

答案 0 :(得分:2)

问题是,您在终端上以可能具有sudo权限的用户身份运行脚本,而apache / webserver用户则没有,因此$ret_val(实际上是只是一个状态代码)设置为1(意味着错误)。

在这两种情况下尝试var_dump($out);以查看您的exec调用的结果。要从浏览器中执行此类操作,您可能需要查看proc_open和系列,或者有一个chmod到777的脚本,因此apache用户也可以运行它。然后让该脚本调用实际的shell脚本并返回它的输出。但这非常危险,只能用于测试您自己机器上的环境。永远不要在生产环境中这样做!

我在这里发布了一些问题,可能会提供信息:

interaction over ssh

opening a second shell, and load profile variables AND call another script

答案 1 :(得分:0)

原来......在将www-data输入到sudoers文件后,我需要做的就是在它之后使用“-u root”