시스템 프로그램 실행 exec
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — 외부 프로그램 실행
설명
exec(string $command
, array &$output
= null
, int &$result_code
= null
): string|false
exec()는 주어진 command
을 실행합니다.
매개변수
command
- 실행할 명령입니다.
output
output
인수가 있는 경우 지정된 배열은 명령의 모든 출력 행으로 채워집니다.\n
과 같은 후행 공백은 이 배열에 포함되지 않습니다. 배열에 이미 일부 요소가 포함되어 있으면 exec()가 배열 끝에 추가됩니다. 함수가 요소를 추가하지 않도록 하려면 배열을 exec()에 전달하기 전에 배열에서 unset()을 호출하십시오.result_code
result_code
인수가output
인수와 함께 있으면 실행된 명령의 반환 상태가 이 변수에 기록됩니다.
반환 값
명령 결과의 마지막 줄입니다. 명령을 실행해야 하고 명령의 모든 데이터가 간섭 없이 직접 다시 전달되도록 하려면 passthru() 함수를 사용하십시오.
실패 시 false
를 반환합니다.
실행된 명령의 출력을 얻으려면 반드시 output
매개변수를 설정하여 사용하십시오.
Examples
예제 #1 exec() 예제
<?php
// outputs the username that owns the running php/httpd process
// (on a system with the "whoami" executable in the path)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo "Returned with status $retval and output:\n";
print_r($output);
?>
위의 예는 다음과 유사한 결과를 출력합니다.
Returned with status 0 and output: Array ( [0] => cmb )
메모
경고 사용자 제공 데이터가 이 함수에 전달되도록 허용할 때 escapeshellarg() 또는 escapeshellcmd()를 사용하여 사용자가 시스템을 속여 임의의 명령을 실행하지 못하도록 합니다.
메모: 프로그램이 이 함수로 시작된 경우 백그라운드에서 계속 실행하려면 프로그램의 출력을 파일이나 다른 출력 스트림으로 리디렉션해야 합니다. 그렇게 하지 않으면 프로그램 실행이 끝날 때까지 PHP가 중단됩니다.
메모: Windows에서 exec()는 먼저 cmd.exe를 시작하여 명령을 실행합니다. cmd.exe를 시작하지 않고 외부 프로그램을 시작하려면 bypass_shell
옵션이 설정된 proc_open()을 사용하십시오.
기타
- system() - 외부 프로그램을 실행하고 출력을 표시
- passthru() - 외부 프로그램 실행 및 원시 출력 표시
- escapeshellcmd() - 이스케이프 쉘 메타 문자
- pcntl_exec() - 현재 프로세스 공간에서 지정된 프로그램을 실행
- backtick operator