我想做一个 web 版本的服务器控制系统,后端语言用 php,现在我通过 php 的 shell_exec 函数调用命令似乎达不到目的,遂请大神帮忙看看有什么问题,谢谢。
我的大概代码如下:
echo '<pre>';print_r(shell_exec('whoami'));
$result = shell_exec($command);echo '<pre>command:',$command,'<br/>';print_r($result);exit;
echoJson(['errcode' => 0, 'msg' => '服务重启成功']);
执行后返回的结果如下:
www-data
command:service nginx stop
* Stopping nginx nginx
...done.
这个执行完后我在服务器上执行 service nginx status ,他提示正在运行中。
我自己解决了,是权限的问题,需要去 /etc/sudoers 文件里添加一行如下代码:
然后在执行命令的前面加上 sudo ,即可。即:
因为我是在 docker 里面的服务器,ubuntu 系统镜像还没有安装 sudo 服务,随手
给安装了 sudo 服务。