从PHP中获取活动打印机的列表
我正在使用PHP获取连接到Xubuntu linux机器的打印机的活动列表,然后创建一个仅显示联机打印机的数组。我想使用这个数组以编程方式确定可以使用哪台打印机进行打印 为了实现这一点,我从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.
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正在运行,因为您在那里得到了不同的结果?