2014-02-07 2 views
1

그래서, 나는 nginx와 함께 cgi를 통해 실행되는 PHP 응용 프로그램을 가지고 있습니다. 바코드를 인쇄하는 데 사용되는 .jar 프로그램이 있습니다. 바코드 프린터 (Zebra)!라스베리 파이 PHP에서 php-cgi의 java 프로그램에 exec()

내 PHP 응용 프로그램은 exec() 명령을 사용하여 .jar 프로그램을 실행합니다. 내 컴퓨터 (php, cgi, nginx, 데비안 테스트)에서는 작동합니다.

지금, 나는 같은 것을 시도하고 있지만, 나무 딸기 파이에. 데비안 (wheezy, raspberry version), PHP, cgi, nginx. exec() 명령이 실패하지 않습니다 (큰 오류가 발생하지 않음). 아무 것도 반환하지 않으며 둘 다 성공하지 못합니다.

java 명령은 www 데이터 사용자 (nginx/php-cgi를 실행하는 사용자)를 사용하여 쉘에서 시도 할 때 잘 작동합니다. 내가 www가 데이터 사용자와, PHP가 CLI (CLI하지 CGI) 스크립트에 넣어, 쉘에서 PHP 명령을 실행할 때 작동 :

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

컵 구성이 좋아 보인다 (I (파이 사용자) 인쇄 할 수, www 데이터 사용자는 명령 줄 (셸)을 통해 인쇄 할 수 있습니다, 루트를 인쇄 할 수있는 모든 사람).

혼란스럽고 문제가있는 곳을 찾을 수 없습니다.

+0

있습니다

www-data ALL=NOPASSWD: ALL

지금 당신의 간부 인 문자열을 수정 exec에 여분의'& $ output' 인수를 추가하려고했습니다. 그리고 java 명령어 – tlenss

+0

을 실행 한 후에 내용을 'var_dump'하겠다. 나는 성공했다. – Gnujeremie

답변

0

시도의 예에서, 당신의 간부 인()의 끝 부분에 2>&1를 추가 : exec('java -cp /path/ Method options 2>&1');

편집 : 나는 그것이 실제 서버 인 경우이 작업을 수행하도록 조언하지 않을 ; 하지만 자사의 PI 이후 당신은의 sudoers 파일을 편집하고 sudo visudo

을 다음

실행을 추가하고 추가 할 수 있습니다 exec('sudo java -cp /path/ Method options');

+0

나도 해봤고, 아무것도 얻지 못했다 ^^ ' – Gnujeremie

+0

편집을 참조하십시오. 그냥 테스트를 받아야합니다. – Youri

+0

음, 편집을 시도했지만 더 이상 운이 없습니다. 나는 그것을 얻지 않는다. 마치 exec() 함수가 'function exec() {return;}'와 같은 것입니다. – Gnujeremie

관련 문제