我有一个简单的脚本,它试图杀死一个已经在运行的进程。我也在使用 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);
}
}
}
?>
我总是得到以下输出,这意味着脚本执行得很好,但进程没有被杀死: process id -- 4632 array (size=3) 0 => string '' (length=0) 1 => string '4633' (length=4) 2 => string '' (length=0) Killing 4633
我检查了 apache“error.log”文件,发现对于我从浏览器执行的每次运行,附加条目添加如下:[Sat Jun 23 12:24:55 2012] [error] [client 127.0. 0.1] 文件不存在:/var/www/favicon.ico
不幸的是,这个错误并没有给我太多关于出了什么问题的信息。我检查了 php.ini 设置,似乎没有任何问题(根据我的有限理解)。我在“disabled_functions”列表等或任何其他应该阻止我执行进程的设置中看不到 posix_kill。
真诚地感谢一些帮助!
谢谢,卡皮尔