Php 从浏览器运行时posix_kill不工作

Php 从浏览器运行时posix_kill不工作,php,apache,process,kill-process,sigkill,Php,Apache,Process,Kill Process,Sigkill,我有一个简单的脚本,它试图杀死一个已经运行的进程。我使用posix_kill来实现同样的目的。如果我从命令shell运行脚本,脚本运行良好,但从浏览器运行脚本时,脚本不起作用 <?php $taskid = 33; killProcess($taskid); function killProcess($taskid) { $ppid = getPID($taskid); echo "process id -- $ppid\n"; $pi

我有一个简单的脚本,它试图杀死一个已经运行的进程。我使用posix_kill来实现同样的目的。如果我从命令shell运行脚本,脚本运行良好,但从浏览器运行脚本时,脚本不起作用

<?php

    $taskid  = 33;
    killProcess($taskid);

    function killProcess($taskid) {
    $ppid = getPID($taskid);
    echo "process id -- $ppid\n";
    $pids = preg_split('/\s+/', `ps -o pid --no-heading --ppid $ppid`);
    var_dump($pids);
    foreach($pids as $pid) {
            if(is_numeric($pid)) {
            echo "Killing $pid\n";
                posix_kill($pid, 15);
            }
    }

    }
?>

我总是得到以下输出,这意味着脚本执行良好,但进程不会终止: 进程id--4632 数组(大小=3) 0=>字符串“”(长度=0) 1=>字符串“4633”(长度=4) 2=>字符串“”(长度=0) 杀害4633人

我检查了apache“error.log”文件,发现对于我从浏览器执行的每次运行,都会添加以下附加条目: [Sat Jun 23 12:24:55 2012][error][client 127.0.0.1]文件不存在:/var/www/favicon.ico

不幸的是,这个错误并没有给我太多关于出错原因的信息。我检查了php.ini设置,似乎没有任何错误(根据我有限的理解)。我在“禁用的函数”列表等中没有看到posix_kill,也没有看到任何其他设置会阻止我执行进程

非常感谢您的帮助

谢谢,
Kapil

错误消息与您的问题无关。它只是浏览器要求您的站点图标,而您尚未配置该图标

现在,关于实际问题:apache用户可能没有权限终止您的进程。如果进程是在不同的用户帐户下启动的,则无法从web服务器中终止它。设想一个多用户系统,其中任何本地用户都可以登录并杀死其他所有人的进程-这不是Unix权限模型


您可能希望将有限的
sudo
exec
一起使用,或者在发送信号之前先获得权限。或者,您可以让进程侦听web服务器执行某些操作,然后自杀。或者,更好的方法是,不要使用像PHP这样的web服务语言来执行系统管理类任务:使用
cron
或更合适的工具。

错误消息与您的问题无关。它只是浏览器要求您的站点图标,而您尚未配置该图标

现在,关于实际问题:apache用户可能没有权限终止您的进程。如果进程是在不同的用户帐户下启动的,则无法从web服务器中终止它。设想一个多用户系统,其中任何本地用户都可以登录并杀死其他所有人的进程-这不是Unix权限模型


您可能希望将有限的
sudo
exec
一起使用,或者在发送信号之前先获得权限。或者,您可以让进程侦听web服务器执行某些操作,然后自杀。或者,更好的是,不要使用像PHP这样的web服务语言来执行系统管理类型的任务:使用
cron
或更合适的工具。

是的……这正是原因……我从PHP守护进程中启动了进程,并试图从浏览器中杀死它……当然,它没有杀死的权限……非常感谢Borealid!!是的……这正是原因……我从php守护进程中启动了进程,并试图从浏览器中杀死它……当然,它没有杀死的权限……非常感谢Borealid!!