我想在按下页面上的按钮后自动打印文件。所以我在我的小型Raspberry Pi Apache服务器上安装了杯子,并使用PHP创建了一个看起来像......
的代码$path = "/media/usb/test.pdf";
$message = exec('sudo lp -d <<PrinterName>> $path');
echo $message;
(我替换了我的PrinterName
)
现在作业被发送到杯子,但状态“停止”。此外,作业的大小还可以,页面数量为0。
我也尝试在终端中直接运行相同的命令(没有变量),一切正常。
这是权限问题吗?
答案 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
检查打印机。