Я пытаюсь наложить файл на принтер, подключенный к серверу с помощью PHP.
Я посылаю команду, такую как lp -d 'Brother_QL-570' '/Users/user_name/Documents/wwwroot/mmsprint/mmsUw8Vv9
, используя EXEC в PHP и получаю возвращаемое значение 5
. Команда отлично работает в окне терминала.
Если я отправлю ls
, whoami
и т. Д., Команда выполнится нормально.
whoami
и ls
живут в / bin, поэтому я создал символическую ссылку для lp, и это не имеет значения.
Также попробовал /usr/bin/lp
, и это тоже не сработало. Я дергаю за волосы, которые у меня остались.
Безопасный режим отключен. Переменные пути одинаковы между PHP и моей терминальной средой.
Я использую MAMP на Lion.
FWIW, команда cat /Users/user_name/Documents/wwwroot/mmsprint/mmswKJqYK | lp -d Brother_QL-570
имеет возвращаемое значение 133
.
Это мой код:
$temp_file = tempnam("./", 'mms');
$pdf->Output($temp_file, "F");
$pdf->Close();
$cmd = "lp -d 'Brother_QL-570' '".$temp_file."'";
exec($cmd,$output,$retval);
error_log("-----cmd=".$cmd."\n", 3, "printCard.log");
foreach ($output as $a) {
error_log("-----output=".$a."\n", 3, "printCard.log");
}
error_log("-----retval=".$retval."\n", 3, "printCard.log");
Есть мысли? Что мне не хватает? Это должно быть легко. Argh !!