【问题标题】:PHP exec to kill linux process not workingPHP exec杀死linux进程不起作用
【发布时间】:2017-11-10 09:56:46
【问题描述】:

我试图从 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: line 0: kill: (1707) - Operation not allowed”

【问题讨论】:

  • 该进程的所有者是谁?
  • 我用 php somescript.php 开始它

标签: php linux apache kill


【解决方案1】:

当您在exec() 中尝试sudo 时,它不起作用,因为您没有提供密码。 尝试或者使用 sudo 运行整个脚本:

sudo php -f yourscript.php

在您的脚本中将 sudo 密码输入sudo kill {$_GET['id']}

PS:-9 可能仍然需要,我建议像往常一样尝试先从终端中终止该进程,看看它是否可以工作。

【讨论】:

  • 怎么办?我试图从一个 url 杀死一个远程进程
猜你喜欢
  • 2011-09-12
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
相关资源
最近更新 更多