PHP: запуск службы (с помощью sudo) - PullRequest
3 голосов
/ 19 ноября 2011

Я делаю скрипт обслуживания системы, который проверяет состояние различных служб (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 ]

2 голосов
/ 19 ноября 2011

Попробуйте использовать

echo 'yourpassword' | sudo -S command
1 голос
/ 19 ноября 2011

Пользователям необходимо разрешение для запуска sudo. В частности, пользователь, который запускает ваш PHP-скрипт, должен находиться в файле sudoers. См. man sudoers для получения информации о файле. Используйте visudo для редактирования файла sudoers. Будьте очень осторожны, предоставляя пользователю php / apache разрешение на запуск sudo. Это потенциальная проблема безопасности, которая может позволить вашим PHP-скриптам делать что угодно.

...