2013-10-08 71 views
4

我正面臨着一個關於從我的php代碼中殺死Linux進程的問題。 我在後臺使用proc_open()函數從我的php代碼運行Scrapy工具。如何使用pid從php中殺死一個linux進程?

它工作正常,但現在我想殺死這個進程使用它的進程ID。 要做到這一點,我正在使用exec("sudo kill -9 $pid");其中$pid是我從我的PHP代碼中獲得的進程ID。

問題是這個進程是代表apache用戶運行的。我認爲可能會有一些權限問題,所以我添加了apache用戶到sudoers文件,如apache ALL=(ALL) NOPASSWD:ALL,但我仍然無法殺死它。不知何故,同樣的kill命令可以在我的putty控制檯上運行。

我的代碼位於Amazon EC2實例上。

我的問題是,我怎麼能殺死從PHP識別的進程?

+1

壞的想法 - 永遠不會授予Apache sudo權限! –

+1

另外,如果'apache'是進程的所有者,你是否只嘗試'kill -9 $ pid'? –

+0

謝謝@SudiptaChatterjee ..只需殺死-9 $ pid工作..我浪費了這麼多天在這..再次感謝! – kishan

回答

16

,永不放棄的Apache sudo權限!

使用exec("kill -9 $pid"); - 你的Apache進程啓動,它可以殺死它:)

+1

我不能這樣做,所以我只需要使用shell_exec,但無論如何感謝它幫助了我很多:) – virusivv

0

嘗試posix_kill

bool posix_kill (int $pid , int $sig) 

發送信號SIG與進程標識符PID的進程。