2015-05-27 3 views
1

Я пытаюсь убить процесс с PID 38456 с использованием Symfony с этим кодом:процесс убийств с использованием Symfony

$process1 = new Process('kill -9 38456'); 
$process1->run(); 

жалобно это не работает. Я думаю, что это связано с разрешениями (Symfony может только убить свой собственный процесс), но я не уверен в этом.

+2

Получите ли вы результат процесса на stdout или stderr или код возврата из команды (то есть '$ process1-> getErrorOutput()' или '$ process1-> getExitCode()')? – wonderb0lt

+0

Использование '$ process1-> getErrorOutput()' prints sh: line 0: kill: (38456) - операция не разрешена и использование '$ process1-> getExitCode()' prints 1. – amarincolas

+1

Это сообщение довольно понятно. Вы должны рассмотреть возможность получения прав на убийство этого процесса (через sudo или изменение владельца вашего процесса Symfony). – wonderb0lt

ответ

0

Попытка понять, какой пользователь запускает код:

$process = new Process('whoami'); 
$process->run(); 
echo $process->getOutput(); 

Если вы apache или www-data то, скорее всего, вы очень ограниченные права.

Ваши варианты:

  • запуска сценария из CLI (командной строки) в качестве корня. Это способ, которым я рекомендую
  • запустить процесс, который вы хотите, чтобы убить из вашего процесса
  • запустить веб-сервер (Apache или PHP-FPM), как корень - очень небезопасно
  • странным образом - веб-сервер может убить процесс не напрямую, а, например, создать файл с идентификатором процесса для его уничтожения. Также будет выполняться процесс CLI, выполняемый маршрутом, который будет читать этот файл и убить этот процесс.

 Смежные вопросы

  • Нет связанных вопросов^_^