exec()在覆盆子pi上的php-cgi中的java程序上

时间:2014-02-07 13:25:13

标签: java php cgi exec raspberry-pi

所以,我有一个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可以打印,大家都可以)。

我很困惑,无法找到问题所在。

1 个答案:

答案 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');