소개
php:// 래퍼를 사용하면 다양한 I/O 스트림에 액세스할 수 있습니다. 여기에는 표준 입력, 출력 및 오류 스트림이 포함됩니다. 인메모리, 디스크 지원 및 필터링된 스트림은 php:// 프로토콜로도 액세스됩니다.
표준 스트림
php://stdin , php://stdout 및 php://stderr 표준 입력 스트림 장치, 표준 출력 스트림 및 PHP 프로세스에 대한 오류 스트림에 대한 직접 액세스를 각각 허용합니다. 사전 정의된 상수 STDIN , STDOUT 및 STDERR 각각 이러한 스트림을 나타냅니다.
php://입력
php://input HTTP 요청 본문에 포함된 원시 데이터에 대한 읽기 전용 액세스를 허용합니다. $HTTP_POST_RAW-DATA에서도 동일한 데이터를 사용할 수 있습니다. 변수(현재 사용되지 않음). 그러나 php://input은 enctype 속성이 multipart/form-data로 설정된 경우 사용할 수 없습니다.
php://출력
이 래퍼는 인쇄와 유사한 버퍼 메커니즘을 허용하는 쓰기 전용 트리를 나타냅니다. 및 에코 진술.
php://fd
파일 설명자는 이 래퍼를 통해 액세스할 수 있습니다. 표준 스트림 STDIN, STDOUT 및 STDERR에는 파일 설명자 1,2 및 3이 할당됩니다. 다른 모든 스트림에는 증가하는 파일 설명자가 할당됩니다. 따라서 php://fd/5는 파일 설명자 5를 나타냅니다.
php://메모리
데이터를 메모리에 임시로 저장할 수 있는 읽기/쓰기 스트림입니다. php://temp 래퍼도 비슷합니다. 단, 후자의 경우 데이터가 메모리가 아닌 임시 파일에 저장됩니다.
php://필터
이 래퍼를 사용하면 스트림이 열릴 때 스트림에 필터를 적용할 수 있습니다. 필터는 readfile(), file_get_contents() 및 file() 함수에 특히 유용합니다.
예시
다음 예에서 콘솔 입력은 php://stdin 에서 읽습니다. php://stdout으로 표시되는 출력
<?php $file=fopen("php://stdin","r"); $x=fread($file,10); echo $x; $out=fopen("php://stdout","w"); fwrite($out, $x); fclose($file); ?>
php://input 스트림 래퍼를 사용하면 HTTP 요청에서 원시 데이터를 가져올 수 있습니다. 다음 예에서 HTML 양식은 POST 메소드를 사용하여 PHP 스크립트에 데이터를 게시합니다.
<html> <body> <form action="testscript.php" method="POST"> <input type="text" name="name"> <input type="text" name="age"> <input type ="submit" value="submit"> </form> </body> </html>
원시 HTTP 데이터를 검색하는 PHP 스크립트는 다음과 같습니다 -
<?php $json = file_get_contents("php://input"); $data = json_decode($json); print_r($json); ?>