я пытаюсь выполнить команду pkill с помощью сценария php.
Сценарий killengine.sh отлично работает с терминала, как с ./killengine.sh, так и с php restart.php.
это killengine.sh
#!/bin/bash
sudo pkill -f engine
и это рестарт.php
$out = shell_exec("/var/www/killengine.sh 2>&1");
var_dump($out);
Оба файла имеют 755 разрешений. Собственный файл restart.php — apache, а root — владелец killengine.sh. Также я попытался с обоими владельцами быть root / apache.
В Visudo я сделал эти изменения:
Defaults:apache !requiretty
но я получаю: «sudo: нет tty настоящего и не задана программа askpass»
Тогда я попробовал с
Defaults!/var/www/killengine.sh !requiretty
тогда я получаю: «sudo: извините, у вас должен быть tty для запуска sudo»
Кроме того, эта линия все время присутствует на EOF
apache ALL=NOPASSWD: /var/www/killengine.sh
но без успеха.
ОС Centos 6
Есть идеи?
решение:
изменил restart.php на
$out= @shell_exec("sudo /var/www/killengine.sh");
Других решений пока нет …