PHP shell_exec似乎失败了

PHP shell_exec似乎失败了,php,mysql,c,shell,Php,Mysql,C,Shell,我正在尝试为客户端编写脚本,以便在需要时重置mysql服务。(他们使用的是简陋的CMS/ECOMERCE,有时会以奇怪的方式干扰数据库,需要重置) 这个问题是shell_exec似乎不工作,var_dump语句输出NULL,mysql服务器没有重置 执行重置的代码片段如下所示 $output = shell_exec('/usr/bin/sudo /bin/restartmysql'); var_dump($output); #include <stdio.h> #include

我正在尝试为客户端编写脚本,以便在需要时重置mysql服务。(他们使用的是简陋的CMS/ECOMERCE,有时会以奇怪的方式干扰数据库,需要重置)

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

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

$output =  shell_exec('/usr/bin/sudo /bin/restartmysql');
var_dump($output);
#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;
}
/bin/restartmysql是用于重新启动数据库的二进制包装器,其源代码如下所示

$output =  shell_exec('/usr/bin/sudo /bin/restartmysql');
var_dump($output);
#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;
}
更新: 当重定向到stderr时,它显示它试图向sudo请求密码,但实际上并不需要,因为二进制包装器上的权限是这样的。但是,当从命令中删除sudo时,我仍然收到此错误

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

尝试重定向stderr以查看是否有错误
shell_exec('/usr/bin/sudo/bin/restartmysql 2>&1')谢谢,我适当地更新了这个问题。这个链接指出了重新启动mysql的方法:讨论了如何重新启动mysql。根据链接,并非所有linux发行版都支持此服务方法。我正在运行Ubuntu 13,它确实可以通过CLI
服务mysql restart
从命令行工作。创建一个
cron
作业来查找是否存在触发文件,然后重新启动mysql(如果存在),然后删除该文件怎么样?这样可以避免执行任何操作。