PHP:执行服务启动(使用sudo)

时间:2011-11-19 18:17:48

标签: php system centos sudo

我正在做一个系统维护脚本,它正在检查各种服务的状态 (memcached,sphinx等)

我想从php脚本启动服务,如果它已关闭...

我设法为memcache这样做:

$command = 'memcached -d -m 800 -l 127.0.0.1 -p 11211 -u root start';
$dummy = system($command, $retval);

它工作得很好......

现在我想为SphinxSearch服务做同样的事情

我试过

$command = 'service searchd start';

但没有结果......我读到我需要sudo,所以我做了

$command = 'sudo service searchd start';

甚至

$command = '/usr/bin/sudo /usr/bin/searchd';

但没有任何效果。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

尝试使用

echo 'yourpassword' | sudo -S command

答案 1 :(得分:1)

用户需要获得运行sudo的权限。具体来说,您的PHP脚本正在运行的用户需要位于sudoers文件中。有关该文件的信息,请参阅man sudoers。使用visudo编辑sudoers文件。要非常小心为php / apache用户提供运行sudo的权限。这是一个潜在的安全问题,可以让您的PHP脚本执行任何操作。