PHP exec с использованием команды LP не работает в Mac OS X - PullRequest
1 голос
/ 01 декабря 2011

Я пытаюсь наложить файл на принтер, подключенный к серверу с помощью 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 !!

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Оказывается, проблема с MAMP. Я погуглил «MAMP exec fails» и нашел несколько хороших ответов. Это проблема совместимости с библиотеками. Я добавил DYLD_LIBRARY_PATH='' && к команде, и Боб мой дядя. Спасибо за ответы.

0 голосов
/ 21 апреля 2012

Я нашел решение, похожее на упомянутое при использовании DYLD_LIBRARY_PATH='' &&. Использование этого помогло мне, поэтому я попытался найти более постоянное исправление, чем включение этого во весь мой код. Я открыл файл /Applications/MAMP/Library/bin/envvars и прокомментировал следующие две строки:

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH

После перезапуска apache это работает ОТЛИЧНО! Не уверен, почему это происходит со мной, хотя. Возможно, нужно что-то сделать с тем фактом, что я использую 2 виртуальных хоста.

0 голосов
/ 01 декабря 2011

Что выводится из команды?

Скорее всего, пользователь PHP (вероятно, apache) не имеет прав на печать.Добавьте этого пользователя в группу lp.(Предполагается, что в этом случае macs работает подобно unix.)

...