Если я запускаю lpr из корня или даже запускаю из apache
runuser -l apache -c 'lpr -P RICOH_Aficio_2032 -r /var/www/html/website/tmp/test.txt'
работает как шарм.
Тем не менее, когда я печатаю с помощью php_exec
exec('lpr -P RICOH_Aficio_2032 -r /var/www/html/website/tmp/test.txt 2> /var/www/html/website/tmp/error.txt');
я получаю следующую ошибку
lpr: Permission denied
Я даже установил apache как владелец test.txt
Php exec работает, когда я использую ls, cat ecc.
Но lpr и lpstat не работают.
В чем дело?
Примечание: я нахожусь на Centos 6.8 с php 5.6
После некоторых исследований я нашел проблему.
Селинукс не позволил службе httpd получить доступ к lpr / cups.
Отключение Selinux решило проблему.
Примечание: мне не нужен Selinux в моей ситуации, но если вы столкнулись с той же проблемой, обратите внимание, что отключение Selinux может быть недостатком безопасности, особенно если сервер доступен за пределами вашей сети. Просто добавьте правила в Selinux, чтобы httpd / php сделал это.
Других решений пока нет …