시스템 프로그램 실행 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()을 사용하십시오.


기타