PHP의 shell_exec 함수를 사용하여 C 프로그램의 바이너리 .exe 파일을 실행하고 있습니다.php shell_exec를 사용하여 출력 파일을 캡처하는 바이너리 파일 실행
My C 프로그램은 입력 텍스트 파일을 사용하고 출력시 여러 텍스트 파일을 만듭니다. 웹 프론트 엔드와 통합하기 위해 php의 shell_exec 함수를 사용하여 쉘 스크립트를 실행하는데,이 쉘 스크립트는 바이너리 C .exe 파일을 호출합니다.
이 바이너리 .exe 파일, 입력 텍스트 파일, 쉘 스크립트 및 PHP 파일은 서버 측에 있습니다. 테스트 목적으로 chmod 777에 서버 쪽에서 언급 한 파일에 대한 액세스 권한을 부여했습니다.
다음 PHP 실행 쉘 스크립트의 추출물이다 :
에코 shell_exec ('쉬 segments.sh 2> & 1'); > segments.sh
./auto_import.exe input_file.txt
을 -terms -이 은다음과 같이
지금, 여기에 내가 쉘 스크립트와 쉘 스크립트를 실행하고하면 바이너리 .EXE 파일을 실행합니다
auto_import는 C 바이너리 .exe 파일입니다.
터미널에서 쉘 스크립트를 개별적으로 실행하면 올바른 결과를 얻을 수 있습니다. 출력은 4-5 개의 다른 텍스트 파일이됩니다.
그러나 PHP로 쉘 스크립트를 호출 할 때 어떤 출력도 얻을 수 없으며 텍스트 파일 수인 이진 파일의 출력을받는 방법을 모르겠습니다.
에 의해 호출되는 PHP 파일 쉘 스크립트에서:
에코 shell_exec ('쉬 /path/segments.sh 2> & 1'내가 예를 들어, 내 파일에 대한 절대 경로를 제공하는 시도
);
쉘 스크립트이진 파일
에코 shell_exec ('SH/경로/진 2> & 1')는 다음과 같이 호출; 다음과 같이
은 또한 간부 기능을 사용하고 있습니다 :
$ cmd를 = "/auto_import.exe input_file.txt -terms"; echo exec ($ cmd, $ output);
이 문제와 관련하여 도움을 주시겠습니까?
없음 헤이든의 shell_exec 여기서 일하지 않는 다음과 같이 그렇게하는 한 가지 방법은 . –
Vivek 질문에 대한 명확한 설명이 필요합니다. 지금은 약간 모호합니다. shell_exec이 실제로 파일을 실행하지 않는다면 경로와 관련된 문제가 가장 자주 발생합니다.shell_exec (예 : shell_exec ("/ usr/home/gary/php/binary.exe") 대신에 shell_exec (예 : shell_exec)와 같이 * 절대 * "binary.exe"). –
나는 절대 경로도 사용했다. 그러나 그것은 효과가 없었습니다. –