运行以下代码:
$version = shell_exec('dpkg -l myprogram | grep myprogram');
问题是,当系统上没有包时,$version
为NULL
。我希望实际得到"找不到匹配myprogram"的包,这就是我在命令行上运行命令时会发生的情况。
代码正常工作。
注意,添加" 2>& 1" (这是我在其他类似问题上看到的建议)到命令的结尾没有帮助。
很奇怪为什么我在PHP中获得与命令行不同的结果。
答案 0 :(得分:0)
您可能放错了2>&1
。把它放在管道前面的正确位置:
$version = shell_exec('dpkg -l myprogram 2>&1 | grep myprogram');
这可以正常工作(刚刚在ubuntu上测试):dpkg
向stderr输出错误消息,2>&1
将其重定向到stdout,然后通过grep传递给stdout,结束到你需要php变量。