所以,我有一个php应用程序,使用nginx运行cgi。 我有一个用于打印条形码的.jar程序,猜猜是什么,条形码打印机(斑马)!。
我的php应用程序使用exec()命令运行.jar程序。在我的电脑上(php,cgi,nginx,debian测试),它可以工作。
现在,我正在尝试同样的事情,但是在覆盆子pi上。 Debian(wheezy,raspberry版),php,cgi,nginx。 exec()命令不会失败(在我没有得到巨大致命错误的方式),不会返回任何内容,也不会成功。
当我在shell中尝试使用www-data用户(运行nginx / php-cgi的用户)时,java命令工作正常。当我把它放在一个php-cli(cli,而不是cgi)脚本中,然后在shell中用php命令运行它,并使用www-data用户:
<?php exec('java -cp /path/ Methode options');?>
$ php print.php
杯子配置似乎没问题(我(pi用户)可以打印,www-data用户可以通过命令行(shell)打印,root可以打印,大家都可以)。
我很困惑,无法找到问题所在。
答案 0 :(得分:0)
尝试在exec()的末尾添加2>&1
,例如:exec('java -cp /path/ Method options 2>&1');
编辑: 如果它是真正的服务器,我不建议你这样做;但由于它是PI,您可以编辑sudoers文件并添加以下内容
运行sudo visudo
并添加:
www-data ALL=NOPASSWD: ALL
现在修改你的exec字符串:
exec('sudo java -cp /path/ Method options');