我面临一个关于从我的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标识的进程?
答案 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