2

我正在尝试使用带有以下代码的 Symfony终止 pid 38456的进程:

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

可惜这行不通。我认为这是由于权限(Symfony 只能杀死自己的进程),但我不确定。

4

1 回答 1

1

尝试了解哪个用户运行您的代码:

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

如果您是apachewww-data那么您很可能拥有非常有限的权利。

您的选择:

  • 以 root 身份从 CLI(命令行)运行您的脚本。这是我推荐的方式
  • 运行你想从你的进程中杀死的进程
  • 以 root 身份运行 web-server (apache 或 php-fpm) - 非常不安全
  • 奇怪的方式 - 网络服务器可以不直接杀死进程,但例如创建一些带有进程 ID 的文件来杀死。还有一个由 rout 运行的 CLI 进程将读取该文件并终止该进程。
于 2016-04-25T20:49:23.020 回答