使用php中的exec()与cups一起打印


Print with cups using exec() in php?

我想在按下页面上的按钮后自动打印一个文件。所以我在我的小Raspberry Pi Apache服务器上安装了cups,并用PHP创建了一个代码,看起来像。。。

$path = "/media/usb/test.pdf";
$message = exec('sudo lp -d <<PrinterName>> $path');
echo $message;

(我更换了PrinterName

现在作业被发送到cups,但状态为"已停止"。此外,作业的大小还可以,页数为0。

我还尝试直接在终端中运行相同的命令(没有变量),一切都正常。

这是权限问题吗?

如果您的命令行在具有完整路径的终端上运行良好,但在PHP命令行中运行不好,则意味着您拥有打印文件的正确权限。因此,问题来自于您在命令中使用$path的语法。

在PHP代码中包含变量时,使用单引号而不是双引号,不会显示变量的内容,而是将变量显示为文本
试试这个:

// Use
$message = exec("lp -d <<yourPrinter>> $path"); // This will display '/media/usb/test.pdf'
// instead of
$message = exec('lp -d <<yourPrinter>> $path'); // That will display '$path' (not correct)

问题是没有在启动命令的服务器上声明打印机。

您可以使用命令lpstat -d检查打印机。