PHP shell_exec似乎失败了

时间:2014-06-09 20:33:55

标签: php mysql c shell

我正在尝试为客户端编写脚本,以便在需要时重置mysql服务。 (他们使用的是一种janky CMS / eccomerce,它有时会以奇怪的方式与数据库混淆,需要重置)

这个问题是shell_exec似乎没有工作,var_dump语句输出NULL并且mysql服务器没有重置。

执行重置的代码片段如下所示

$output =  shell_exec('/usr/bin/sudo /bin/restartmysql');
var_dump($output);

/ bin / restartmysql是一个用于重新启动数据库的二进制包装器,它的源代码如下所示

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(char argc, char** argv) {
  setuid(0);
  system("/usr/sbin/service mysql restart");
  return 1;
}

我已经加倍检查并且我的php.ini中没有禁用shell_exec,同时www-data具有执行restartmysql的正确权限

这是sudoers片段

www-data       LOCAL=NOPASSWD:/bin/restartmysql

更新

当重定向到stderr时,它显示它正在尝试使用sudo请求密码,由于权限在二进制包装器上的方式,实际上不需要密码。但是,当从命令中删除sudo时,我仍然会收到此错误。

string(106) "/usr/sbin/service: 127: /usr/sbin/service: stop: not found
/usr/sbin/service: 128: exec: start: not found
"

0 个答案:

没有答案