使用php中的exec()打印杯子?

时间:2015-12-31 21:30:25

标签: php printing server cups

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

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

echo $message;

(我替换了我的PrinterName

现在作业被发送到杯子,但状态“停止”。此外,作业的大小还可以,页面数量为0。

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

这是权限问题吗?

2 个答案:

答案 0 :(得分:1)

如果您的命令行在具有完整路径的终端上运行良好,但在 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)

答案 1 :(得分:-1)

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

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