php:// 서버 형태인 표준 스트림은 입력(STDIN), 출력(STDPUT), 에러(STDERR) 를 기록하는 스트림입니다.

참고로 PHP 5.2.1 이전 버전일 경우 php:// 에 대해 버그가 존재하므로 STDIN, STDOUT, STDERR 상수를 사용하도록 권고하고 있습니다.

상 수 설 명
STDIN 표준 입력으로 명령 프롬프트(또는 터미널)에 무엇을 입력하거나 POST 메소드로 전송된 자료
STDOUT 표준 출력으로 일반적인 자료를 출력할 때
STDERR 브라우저로 에러 메시지를 출력하는 대신 표준 에러로 에러 메시지를 기록

다음은 입력(STDIN) 사용 예제입니다.

#!/usr/bin/php -q
<?php
 if($fp = @fopen("php://stdin", 'r'))
 {    
       fclose($fp);
 }
 ?>

다음은 에러(STDERR) 사용의 예입니다.

#!/usr/bin/php -q
<?php
 if($fp = @fopen('readme.txt', 'ab'))
 {
       fwrite($fp, "라인을 추가합니다.");      
       fclose($fp);
 }
 else
 {
       // 브라우저에 출력하면서 기록합니다.
       $errmsg = "파일 열기에 실패하였습니다.";
       error_log($errmsg, 3, "php://stderr");

       exit($errmsg);
 }
 ?>

#!/usr/bin/php -q
<?php
 echo "Are you sure you want to do this?  Type 'yes' to continue: ";
 $handle = fopen ("php://stdin","r");
 $line = fgets($handle);
 if(trim($line) != 'yes') {
    echo "Error!\n";
    exit;
 }
 echo "\n";
 echo "Thank you, continuing...\n";
 ?>

다음 그림은 표준입력 결과화면으로 위 내용을 파일로 작성하여 명령 프롬프트(또는 터미널)에서 실행한 화면으로 "Are you sure you want to do this?  Type 'yes' to continue: " 메시지가 출력되는데, 각각 값을 "no"와 "yes" 라고 입력했을 때의 결과 화면입니다.


다음은 표준출력 입니다. 표준출력은 일반적인 자료를 출력할 때 사용됩니다.

#!/usr/bin/php -q
<?php
 echo "Are you sure you want to do this?  Type 'yes' to continue: ";
 $handle = fopen ("php://stdout","r");
 $line = fwrite($handle, "Thank you....");
 echo "\n";
 echo "line:" . $line;
 ?>

다음 화면에서 표시되는 line: "12"란 글자 수입니다.


0 댓글