我正在做一个系统维护脚本,它正在检查各种服务的状态 (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';
但没有任何效果。
有什么建议吗?
答案 0 :(得分:2)
尝试使用
echo 'yourpassword' | sudo -S command
答案 1 :(得分:1)
用户需要获得运行sudo
的权限。具体来说,您的PHP脚本正在运行的用户需要位于sudoers文件中。有关该文件的信息,请参阅man sudoers
。使用visudo
编辑sudoers文件。要非常小心为php / apache用户提供运行sudo的权限。这是一个潜在的安全问题,可以让您的PHP脚本执行任何操作。