PHP exec杀死linux进程无法正常工作

时间:2017-11-10 09:56:47

标签: php linux apache kill

我正在尝试从php脚本中删除一个进程,但它一直在失败

ps ax | grep 8648

 8648 ?        Ss     0:15 /usr/bin/php -f /home/whatever/websites/engine/shadow_engine/engine_SHDW_01.php -- --id=SHDW_01
 9226 pts/0    S+     0:00 grep 8648

我的php脚本:

if(isset($_GET['id']) && strlen(trim($_GET['id'])) > 0){
    $killCommand = "kill {$_GET['id']}";
    exec($killCommand, $killOutput, $killStatus);

    if($killStatus === 0){
        echo "Process successfully killed";
    } else {
        echo "Failed to kill process";
    }
}

$ killStatus总是返回1而不是0表示exec命令失败,我试过'sudo kill {$ _GET ['id']}'甚至'sudo kill -9 {$ _GET ['id'] }',但它们都不起作用。

编辑:httpd错误日志说'sh:第0行:kill:(1707) - 不允许操作'

1 个答案:

答案 0 :(得分:0)

当您在sudo内尝试exec()因为您没有提供密码而无法正常工作时。 尝试 使用sudo运行整个脚本:

sudo php -f yourscript.php
在您的脚本中

OR 将sudo密码输入sudo kill {$_GET['id']}

PS:可能仍然需要-9,我建议您像往常一样从终端首先尝试终止该过程,看看它是否有效。