繁体   English   中英

树莓派php-cgi中Java程序上的exec()

[英]exec() on a java program in php-cgi on a raspberry pi

因此,我有一个使用nginx通过cgi运行的php应用程序。 我有一个.jar程序,用于在条形码打印机(Zebra)上打印条形码!

我的php应用程序使用exec()命令运行.jar程序。 在我的计算机上(php,cgi,nginx,debian测试),它可以工作。

现在,我正在尝试相同的操作,但是在树莓派上。 Debian(简直是覆盆子版),php,cgi,nginx。 exec()命令不会失败(以我不会收到严重的致命错误的方式),不会返回任何内容,也不会成功。

当我使用www-data用户(运行nginx / php-cgi的用户)在shell中尝试使用Java命令时,该命令运行良好。 当我将它放在php-cli(cli,而不是cgi)脚本中,并使用www-data用户的shell中的php命令运行它时,它会起作用:

<?php exec('java -cp /path/ Methode options');?>
$ php print.php

Cups配置似乎还可以(我(pi用户)可以打印,www-data用户可以通过命令行(shell)打印,root可以打印,每个人都可以)。

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

尝试在exec()的末尾添加2>&1 ,例如: exec('java -cp /path/ Method options 2>&1');

编辑:如果它是真实服务器,我不建议您这样做; 但由于它是PI,因此您可以编辑sudoers文件并添加以下内容

运行sudo visudo

并添加:

www-data ALL=NOPASSWD: ALL

现在使用以下exec('sudo java -cp /path/ Method options');修改您的exec字符串: exec('sudo java -cp /path/ Method options');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM