php://stdin, php://stdout, php://stderr은 PHP 프로세스의 입력이나 출력 스트림에 대한 접속 권한을 허용한다. 스트림은 복제된 파일 디스크립터를 참조하기에, php://stdin을 열고 나중에 닫으면, 복제된 디스크립터만 닫을 뿐입니다--STDIN을 참조하는 실제 스트림에는 영향을 주지 않습니다. 이에 대해서 PHP 5.2.1까지 버그가 있었음에 주의하십시오. 이 래퍼를 사용하여 수동으로 스트림을 여는 대신, STDIN, STDOUT, STDERR 상수를 이용하기를 권합니다.
php://output은 print() 와 echo() 같은 출력 버퍼 메카니즘에 대한 쓰기 권한을 허용한다.
php://input은 raw POST 데이터를 읽을수 있는 권한을 허용한다. $HTTP_RAW_POST_DATA에 대한 메모리 집적에 대한 차선책이고, 특별한 php.ini 디렉티브 설정이 필요치 않다. php://input은 enctype="multipart/form-data"에 사용할 수 없습니다.
php://stdin 과 php://input 은 읽기 전용, 반면에 php://stdout, php://stderr 은 php://output 쓰기 전용이다.
php://filter는 스트림을 열때 필터의 응용을 허용하도록 설계된 메타-래퍼(meta-wrapper)의 한 종류이다. 컨텐츠를 읽기전에 스트림에 대한 필터를 적용할 기회가 전혀 없는 readfile(), file(), file_get_contents() 같은 올-인-원(all-in-one) 함수에 대한 가용성을 갖는다.
php://filter 타겟은 그 'path'의 부분으로서 다음 'parameters'를 취한다.
/resource=<필터링되는 스트림> (필수) 이 인수는 php://filter 사양의 끝부분에 위치해야 하고 필터링을 원하는 스트림을 가리켜야 한다.
<?php
/* This is equivalent to simply:
readfile("http://www.example.com");
since no filters are actually specified */
readfile("php://filter/resource=http://www.example.com");
?>
/read=<읽기 체인에 적용되는 필터 리스트> (선택적) 이 인수는 | 파이프 문자로 구분되는 하나이상의 필터명이 적용된다.
<?php
/* 이는 www.example.com의 내용 전체를
대문자로 출력합니다. */
readfile("php://filter/read=string.toupper/resource=http://www.example.com");
/* 이는 위와 동일하지만,
ROT13 인코드를 같이 수행합니다. */
readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
?>
/write=<쓰기 체인에 적용되는 필터 리스트> (선택적) 이 인수는 | 파이프 문자로 구분하는 하나이상의 필터명을 적용합니다.
<?php
/* rot13필터에 문자열 "Hello World"를
통과하고, 현재 디렉토리의
example.txt에 씁니다. */
file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?>
php://memory 래퍼는 데이터를 메모리에 저장합니다. php://temp도 비슷하게 작동하지만, 메모리 한계(기본값은 2MB)에 도달했을 때 임시 파일을 사용하여 데이터를 저장합니다.
php://temp 래퍼는 'path'에 다음의 'paramters'를 가집니다:
/maxmemory:<바이트수>(선택적). 이 인수는 메모리 한계(데이터가 임시 파일에 쓰여지는 시점)의 기본값을 조정합니다.
<?php
$fileMBs = 5 * 1024 * 1024;
$fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+');
fputs($fp, "hello\n");
// 쓴 것을 읽기
rewind($fp);
echo stream_get_contents($fp);
?>
속성 | 지원 |
---|---|
allow_url_fopen으로 제한 | 아니오 |
allow_url_include로 제한 | php://input, php://stdin, php://memory, php://temp만. |
읽기 허용 | php://input, php://stdin, php://memory, php://temp만. |
쓰기 허용 | php://stdout, php://stderr, php://output, php://memory, php://temp만. |
추가 허용 | php://stdout, php://stderr, php://output, php://memory, php://temp만. (쓰기와 동일) |
동시 읽기/쓰기 허용 | php://memory, php://temp만. |
stat() 지원 | php://memory, php://temp만. |
unlink() 지원 | 아니오 |
rename() 지원 | 아니오 |
mkdir() 지원 | 아니오 |
rmdir() 지원 | 아니오 |