설명
resource popen ( string $command , string $mode )
command 로 지정한 명령어의 포크에 이루어진 프로세스에 파이프를 오픈합니다.
파라미터
command
명령.
mode
모드.
반환 값
fopen() 로 반환된 파일 포인터와 같은 것을 갚는데 그것은( 읽고 쓰기의 어느 한쪽에서만 사용되는)단 방향 스트림이다, pclose() 으로 밀접되지 않으면 안 된 곳이 다릅니다. 이 포인터는fgets() 및fgetss() fwrite() 의 어느쪽이든으로 사용할 수 있습니다. 모드가'r'때는 돌려주는 파일 포인터는 그 명령의 STDOUT와 같아집니다. 또 모드가 'w'때는 돌려주는 파일 포인터는 그 명령의 STDIN와 같아집니다.
에러가 발생한 경우FALSE 를 갚겠습니다.
예
사례 1popen() 의 예
<?php
$handle = popen("/bin/ls", "r");
?>
실행해야 할 명령이 없는 경우엔 정상적인 리소스가 반환됩니다. 이상하다고 생각될지도 모르지만 여기에는 의미가 있습니다. 이에 의해서 껍질에서 반환된 에러 메시지에 접속할 수 있습니다.
사례 2popen() 의 예
<?php
error_reporting(E_ALL);
/* 리다이렉트에 의한 표준 오류 출력을 취득합니다 */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
주의:
쌍방향(two-way)의 서포트를 요구하고 있다면 proc_open() 를 사용하세요.
주의: 세이프 모드가 유효한 경우 safe_mode_exec_dir 안에 있는 실행 프로그램만을 실행 가능합니다. 실제적인 이유로 현재 실행 프로그램에 대한 패스를.. 포함할 수 없습니다.
경고
세이프 모드가 유효한 경우 명령 문자열은 escapeshellcmd() 그래서 확장됩니다. 즉,는echo y | echo x ,echo y \| echo x 입니다.