Я пытаюсь убить процесс из сценария php, но он продолжает сбой
ps ax | grep 8648
8648 ? Ss 0:15 /usr/bin/php -f /home/whatever/websites/engine/shadow_engine/engine_SHDW_01.php -- --id=SHDW_01
9226 pts/0 S+ 0:00 grep 8648
мой скрипт php:
if(isset($_GET['id']) && strlen(trim($_GET['id'])) > 0){
$killCommand = "kill {$_GET['id']}";
exec($killCommand, $killOutput, $killStatus);
if($killStatus === 0){
echo "Process successfully killed";
} else {
echo "Failed to kill process";
}
}
$ killStatus всегда возвращает 1 вместо 0, что означает, что команда exec не выполнена, я пробовал ‘sudo kill {$ _GET [‘ id ‘]}’ или даже ‘sudo kill -9 {$ _GET [‘ id ‘]}’, но ни один из них не работает.
редактировать: журнал ошибок httpd говорит ‘sh: строка 0: kill: (1707) — операция не разрешена’
Когда вы пытаетесь sudo
внутри вашего exec()
это не работает, потому что вы не предоставляете пароль.
Пробовать или запустить весь скрипт с помощью sudo:
sudo php -f yourscript.php
ИЛИ ЖЕ внутри вашего скрипта передать пароль sudo в sudo kill {$_GET['id']}
PS: -9
может все еще понадобиться, я бы посоветовал попытаться сначала убить процесс с вашего терминала, как обычно, и посмотреть, будет ли он работать.
Других решений пока нет …