【问题标题】:Shell_exec issue with phpphp的Shell_exec问题
【发布时间】:2016-07-04 02:37:45
【问题描述】:

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 wheezy。

编辑:即使 sudoers 文件中的 nobody ALL=NOPASSWD: ALL 似乎也无法让我的 shell_exec 与 sudo 一起使用。

【问题讨论】:

  • From : codebin.co.uk/blog/running-scripts-as-root-from-php : 如果输出为空并且命令静默失败,那是因为 sudo 设置为只能从终端直接使用。链接中的解决方案(未测试不知道是否有效)。
  • 试过了,没用。不过感谢您的回复。

标签: php linux exec restart shell-exec


【解决方案1】:

我认为这可能是一个错字。

应该是shell_exec('sudo /sbin/shutdown -r now');,不是每次都使用相对路径。

【讨论】:

  • 那也行不通。我还检查了 php.ini 文件以查看 sudo 是否被禁用,但事实并非如此。说实话,我尝试了很多不同的东西,我什至都想不起来了(基本上是当你谷歌 sudo 和 shell_exec 问题时出现的所有东西),但到目前为止没有任何效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2013-03-19
相关资源
最近更新 更多