从PHP中获取活动打印机的列表

从PHP中获取活动打印机的列表,php,linux,printing,Php,Linux,Printing,我正在使用PHP获取连接到Xubuntu linux机器的打印机的活动列表,然后创建一个仅显示联机打印机的数组。我想使用这个数组以编程方式确定可以使用哪台打印机进行打印 为了实现这一点,我从PHP内部调用 lpstat -p -d 这就产生了以下回应: printer DYMO-LabelWriter-400-Turbo-1 disabled since Fri 26 Jul 2013 10:45:50 AM UTC - Unable to send data to printer.

我正在使用PHP获取连接到Xubuntu linux机器的打印机的活动列表,然后创建一个仅显示联机打印机的数组。我想使用这个数组以编程方式确定可以使用哪台打印机进行打印

为了实现这一点,我从PHP内部调用

lpstat -p -d
这就产生了以下回应:

printer DYMO-LabelWriter-400-Turbo-1 disabled since Fri 26 Jul 2013 10:45:50 AM UTC -
    Unable to send data to printer.
printer DYMO-LabelWriter-400-Turbo-2 is idle.  enabled since Mon 04 Nov 2013 04:30:57 AM UTC
printer Samsung-SCX-4200 is idle.  enabled since Wed 10 Jul 2013 11:30:49 AM UTC
system default destination: DYMO-LabelWriter-400-Turbo-1
然而,这个列表是不正确的。在运行调用时,上述打印机均未实际连接。如果打印机可以使用,有没有办法进行探测

编辑: 以下是我使用的代码:

function getActivePrinters() {

    $o = shell_exec("lpstat -d -p");
    $res = explode("\n", $o);
    $i = 0;
    foreach ($res as $r) {
        $active = 0;
        if (strpos($r, "printer") !== FALSE) {
            $r = str_replace("printer ", "", $r);
            if (strpos($r, "is idle") !== FALSE)
                $active = 1;

            $r = explode(" ", $r);

            $printers[$i]['name'] = $r[0];
            $printers[$i]['active'] = $active;
            $i++;
        }
    }
    return $printers;
}

您是否正在使用
system('lpstat-p-d')
获取该列表?如果是,您是否尝试过使用
echo'',print_r(打印机列表(打印机枚举本地),true),''看到返回的内容了吗?我没有安装打印机扩展。所以我得到了一个对未定义函数error的调用。我已经添加了我正在使用的代码。使用正则表达式比使用explode更容易,如果您需要有关该正则表达式的帮助,请提供运行该命令行时获得的输出手动从CLI运行
lpstat-p-d
时会发生什么,它与通过php运行时获得的列表是否不同?如果是这样的话,可能是用户php正在运行,因为您在那里得到了不同的结果?