将PHP shell_exec与dpkg实用程序一起使用时出现意外输出

时间:2014-03-27 16:36:31

标签: php shell

运行以下代码:

$version = shell_exec('dpkg -l myprogram | grep myprogram');

问题是,当系统上没有包时,$versionNULL。我希望实际得到"找不到匹配myprogram"的包,这就是我在命令行上运行命令时会发生的情况。

myprogram 存在时,

代码正常工作。

注意,添加" 2>& 1" (这是我在其他类似问题上看到的建议)到命令的结尾没有帮助。

很奇怪为什么我在PHP中获得与命令行不同的结果。

1 个答案:

答案 0 :(得分:0)

您可能放错了2>&1。把它放在管道前面的正确位置:

$version = shell_exec('dpkg -l myprogram 2>&1 | grep myprogram');

这可以正常工作(刚刚在ubuntu上测试):dpkg向stderr输出错误消息,2>&1将其重定向到stdout,然后通过grep传递给stdout,结束到你需要php变量。