차근차근/PHP

popen PHP 명령어 사용 질문

예쁜꽃이피었으면 2014. 9. 5. 11:03

http://www.phpschool.com/link/qna_function/179965


popen 함수가 php에서 명령어를 사용하는 거라고 합니다. 검색해서 찾았는데 정확히 저 함수가 어떻게 이용되는지 모르겠네요. 


php에서 명령어를 실행한다는것도 잘 이해가 안가구요 


예를들어 리눅스에 있는 ls 명령 처럼요 


아시는분 계신가요?? 


조언이나 저 함수의 사용예좀 부탁하겠습니다.



============>

php 에서 UNIX 쉘 명령을 실행하는 방법은 여러가지가 있습니다. 


1. $result = `ls -al` 


왼쪽 탭 위에 있는 따옴표를 사용하는 방법입니다. 

UNIX 쉘 명령을 사용하는 방법 중에 가장 쉽습니다. 

간단한 쉘 명령어들은 저렇게 사용하면 됩니다. 


2. $resultLastLine = system('ls -al', $return_var) 


system() 으로 실행하면 실행 결과 화면이 자동으로 출력됩니다. 

그러고나서, 실행 결과의 가장 마지막 줄이 반환됩니다. 

두 번째 파라미터는 옵션입니다. 

두 번재 파라미터에는 command 의 return 값이 넘어옵니다. 


예를 들어 exit(-1) 로 종료하면 -1 값이 넘어오는 겁니다. 


주로, 결과 화면을 그대로 출력하고 싶을 때 많이 사용합니다. 


3. $result = exec('ls -al', $arrResult, $return_var) 


exec 는 system() 과 다르게 결과 화면을 출력해주지 않고 그대로 반환해줍니다. 

두 번째 파라미터에는 그 결과가 한줄씩 배열로 넘어옵니다. 

세 번째 파라미터는 system() 의 두 번째 파라미터와 동일합니다. 


return 값을 얻고 싶으면서 화면에 출력하기 싫을 때 주로 사용합니다. 


4. $fp = popen('ls -al', 'r') 


popen 은 쉘 명령어에 값을 입력하거나 혹은 결과를 받을 때 사용합니다. 

반환되는 값은 파일 포인터인데 fopen() 에서 넘어온 포인터 사용하듯이 사용하면 됩니다. 

대신, 닫을 때 pclose() 로 닫아주기만 하면 됩니다. 


아래 간단한 예제입니다. 


하지만, 쉘 명령어에 writing 할려는 목적이 아니면 그다지 많이 쓰이지는 않습니다. 


<? 

/* Add redirection so we can get stderr. */ 

$handle = popen('/path/to/spooge 2>&1', 'r'); 

echo "'$handle'; " . gettype($handle) . "\n"; 

$read = fread($handle, 2096); 

echo $read; 

pclose($handle); 

?>

반응형

'차근차근 > PHP' 카테고리의 다른 글

java데이터 php에서 받기?  (0) 2014.12.02
[PHP] php exec() 함수 사용시 에러 출력  (0) 2014.09.05
popen()과 exec() : 명령 실행  (0) 2014.09.05
[PHP] php.ini의 위치  (0) 2014.09.04
php.ini 설정하기  (0) 2014.09.04