0

如果我从 root 运行 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 的所有者

当我使用 ls、cat ecc 时,Php exec 可以工作。但是 lpr 和 lpstat 不起作用。

怎么了?

注意:我在 Centos 6.8 和 php 5.6

4

1 回答 1

0

经过一番研究,我发现了问题所在。

Selinux 没有让 httpd 服务访问 lpr/cups。

禁用 Selinux 解决了这个问题。注意:在我的情况下,我不需要 Selinux,但如果您遇到同样的问题,请注意禁用 Selinux 可能是一个安全漏洞,特别是如果服务器可以在您的网络之外访问。只需将规则添加到 Selinux 让 httpd/php 执行此操作。

于 2016-12-23T16:48:02.353 回答