在php中使用exec()打印纸杯?

在php中使用exec()打印纸杯?,php,printing,server,cups,Php,Printing,Server,Cups,我想在按下页面上的按钮后自动打印文件。所以我在我的小Raspberry Pi Apache服务器上安装了cups,并用PHP创建了一个代码,看起来像 $path = "/media/usb/test.pdf"; $message = exec('sudo lp -d <<PrinterName>> $path'); echo $message; $path=“/media/usb/test.pdf”; $message=exec('sudo lp-d$path');

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

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

echo $message;
$path=“/media/usb/test.pdf”;
$message=exec('sudo lp-d$path');
回声$信息;
(我替换了我的
PrinterName

现在作业已发送到cups,但状态为“已停止”。此外,作业大小正常,页数为0

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


这是权限问题吗?

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


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

您的Web服务器用户是否有执行该命令的权限?就像使用echo exec(“whoami”);你会注意到一个不同的用户运行你创建的实际终端屏幕感谢你的回答!exec('whoami')向我显示“www数据”,而在终端中,它向我显示“pi”。我是否必须将php文件的所有者更改为pi(sudo chown pi:pi/var/www/test.php)?但是,如果我这样做,exec('whoami')仍然告诉我“www data”而不是“pi”。只需研究一下您的命令所使用的权限。决不授予脚本完全管理权限。这是在另一个音符上要求大量的痛苦。您可以运行Cronjob来使用数据库中存储的信息执行print命令。那将是最好的办法