我在函数shell_exec遇到了一个小问题。我正在尝试做的是通过单击按钮重新启动 linux 服务器。但是,我似乎无法使命令起作用。
这是我尝试使用的命令:
shell_exec('sudo sbin/shutdown -r now');
我已经阅读了几个小时的有关此问题的信息,并尝试了我能找到的所有方法,但无济于事。
所以这是我尝试过的:首先,我检查了 php 中没有行.ini以防止我使用该命令。其次,我将这一行添加到/etc/sudoers 中
%www-data ALL=NOPASSWD: /sbin/shutdown
当这也不起作用时,我还创建了一个新文件到 etc/sudoers.d/并在那里写了这个:%users ALL=NOPASSWD: /sbin/shutdown
我也不知道这是否相关,但是当我尝试在同一位置运行另一个shell_exec时,它工作正常(返回 www-data)
echo shell_exec("whoami");
但是当我添加sudo时什么也没显示:
echo shell_exec("sudo whoami");
所以,是的,如果有人可以告诉我还有什么可以尝试的,我将不胜感激。提前谢谢。PS,如果有任何帮助,我正在尝试让它工作是 linux 喘息。
编辑:即使nobody ALL=NOPASSWD: ALL
在 sudoers 文件中似乎也不能让我的shell_exec使用 sudo。
我认为这可能是一个错字。
它应该是shell_exec('sudo /sbin/shutdown -r now');
,使用相对路径不会每次都起作用。