2012-04-24 3 views
3

PHP를 통해 실행중인 콘솔 프로그램 (Linux/데비안에서 실행중인 콘솔)과 통신 할 수있는 방법이 있는지 알고 싶습니다. 나는 현재 약간의 (기존) 콘솔 Java 프로그램 용 webinterface를 만들려고 노력하고 있으며, 이것을 할 수있는 방법이 있는지 전혀 모른다. 원격 제어 모듈을 사용하여 코드 조각을 "주입"한 다음 PHP를 통해 스크립트를 "원격 제어"할 수 있습니까? (기존 .jar 파일을 변경하지 않거나 다시 주입하지 않는 것이 좋을 것입니다.)PHP로 실행중인 응용 프로그램과의 인터페이스는 무엇입니까?

모든 조언에 감사드립니다! PHP를 실행하는 사용자는 물론 자바 바이너리에 액세스 할 수 있다고 가정

$output = system("java com.yourcompany.package.RunnableClass"); 
print $output; 

: 자바 프로그램이 바로 실행하고 출력이 콘솔에 경우

+0

외부 프로그램을 실행 하시겠습니까? 또는 프로그램과 같은 데몬과 통신 할 수 있습니까? – Jarry

답변

1

, 당신은 쉽게 충분한 같은 것을 그것을 할 수 있습니다 JAR 파일에 액세스 할 수있는 권한이 있는지 확인하십시오.

실행중인 프로그램에 액세스하는 것은 약간 어렵습니다. 대부분의 프로그램은 기본적으로 내장되어 있지 않으며 (많은 경우에 임의의 외부 프로세스에 대한 액세스를 허용하는 것은 바람직하지 않습니다.) 그렇다고해도, 당신은 좋은 모습입니다. 그렇지 않고 Java 코드를 변경할 수 있다면 좋은 것입니다. 그렇지 않다면 운이 나쁠 수도 있습니다.

그런 경우 좋은 접근법은 Java 코드가 액세스하는 리소스와 액세스하는 방법을 확인하는 것입니다. 그렇다면 PHP에서 비슷한 것을 쓸 수 있습니다. 휠을 다시 발명 할 때 분명히 이상적이지는 않지만 데이터에 접근해야하거나 그것이 무엇이든 위의 방법 중 하나를 사용할 수 없다면 작동 할 것입니다.

+0

내 접근 방식은 실행중인 프로그램과 인터페이스하여 인터넷을 통해 실행중인 "데몬"(그렇게 전화를 걸고 싶을 때)을 관리 할 수있었습니다. Java에서 "코드 삽입"을 좀 더 살펴볼 것입니다. 이 주제에 관해서 제 질문을 완전히 지우는 것이 있다면, 제가 여러분에게 알려 드리겠습니다. 빠른 답변 주셔서 감사합니다! –

+0

"코드 삽입"은 일반적으로 특정 유형의 공격을 나타 내기 위해 사용되므로 훌륭한 검색 용어는 아닙니다. jar를 리버스 엔지니어링하는 것이 좋습니다 (소스에 액세스 할 수없는 경우). – lynks

3

실행중인 프로그램에 통신 인터페이스가 없다면 통신 할 수 없습니다. 그러나 그렇다면 대답은 프로그램이 외부 입력을 수신하는 방법에 따라 달라집니다.

프로그램에 네트워크 수신 스레드 (데몬)가 포함되어 있으면 CURL 또는 PHP의 원시 소켓을 사용하여 루프백 인터페이스에서 통신 할 수 있습니다.

프로그램과 통신하는 다른 방법은 파일에 대한 액세스를 공유하는 것입니다 (PHP는 파일을 작성하고 Java는 파일을 읽음) 또는 데이터베이스를 통해 공유합니다.

데이터베이스가 최상의 옵션 일 것입니다. 이것은 스레드로부터 안전하며 PHP와 Java 모두 뛰어난 MySQL 지원 (JDBC를 통한 Java)을 제공합니다.

실제로 실행중인 프로그램과 인터페이스 할 필요는 없지만 PHP를 시작/중지/다시 시작해야하는 경우 PHP의 system() 함수를 사용하면됩니다.

관련 문제