我有一个PHP脚本,其中包含以下命令:
exec("pgrep -fl ./build-dh", $output, $return);
pgrep通常会返回“1”,如果它没有找到“./build-dh”进程正在运行,但是,它总是返回“0”,即使我肯定该进程没有运行。
以下是我从$ output获得的信息:
Array ( [0] => 28560 sh -c pgrep -fl ./build-dh )
这意味着它正在输出它自己的pid,无论如何我都会强制使用“0”返回代码。当我在shell中运行以下代码时,它可以正常工作:
$pgrep -fl ./build-dh
$echo $?
1
所以返回值工作得很好......当我运行它时:
$pgrep -f nginx
11192
11193
11194
11195
11196
$echo $?
0
如何在PHP中正常运行?
由于
答案 0 :(得分:0)
幸运的是,从exec中修复$output
和$result
与更接近CLI中的内容并不需要太多:
foreach($output as $oi=>$o) if(strpos($o,'pgrep')!==false) unset($output[$oi]);
$return = !count($output);