如何使用php中的pid杀死linux进程?

时间:2013-10-08 05:35:07

标签: php linux apache amazon-ec2

我面临一个关于从我的PHP代码中杀死Linux进程的问题。 我正在使用后台的proc_open()函数从我的PHP代码运行Scrapy工具。

它工作正常,但现在我想使用其进程ID终止此进程。 要做到这一点,我正在使用exec("sudo kill -9 $pid");,其中$pid是我从PHP代码中获取的进程ID。

问题是此进程是代表apache用户运行的。我认为可能存在一些权限问题,所以我将apache用户添加到sudoers文件中,就像这个apache ALL=(ALL) NOPASSWD:ALL但我仍然无法杀死它。不知何故,同样的kill命令可以在我的putty控制台上运行。

我的代码位于Amazon EC2实例上。

我的问题是,如何从php中删除pid标识的进程?

3 个答案:

答案 0 :(得分:20)

永远不要给apache sudo权限!

使用exec("kill -9 $pid"); - 你的apache进程启动它,它可以杀死它:)

答案 1 :(得分:4)

尝试posix_kill

bool posix_kill ( int $pid , int $sig )
     

使用进程标识符pid将信号sig发送到进程。

答案 2 :(得分:0)

您可以使用具有sudo权限的exec来获得更安全的技能,请查看kill users processes in linux with php

谢谢&问候,
Alok Thaker