php://

php://���ʸ�������/�������I/O streams��

˵��

PHP �ṩ��һЩ��������/�����IO������������� PHP ���������������׼��������ʹ����������� �ڴ��С����̱��ݵ���ʱ�ļ����Լ����Բ���������ȡд���ļ���Դ�Ĺ�������

php://stdin, php://stdout �� php://stderr

php://stdin��php://stdout �� php://stderr ����ֱ�ӷ��� PHP ������Ӧ���������������� �����������˸��Ƶ��ļ������������������� php://stdin ����֮��������� ���ǹر��˸���Ʒ�����������õ� STDIN ������Ӱ�졣 ע�� PHP ���ⷽ�����Ϊ�кܶ� BUG ֱ�� PHP 5.2.1�� �Ƽ����ʹ�ó��� STDIN�� STDOUT �� STDERR �������ֹ�����Щ��װ����

php://stdin ��ֻ���ģ� php://stdout �� php://stderr ��ֻд�ġ�

php://input

php://input �Ǹ����Է��������ԭʼ���ݵ�ֻ������ POST ���������£����ʹ�� php://input ������ $HTTP_RAW_POST_DATA����Ϊ�����������ض��� php.ini ָ� ���ң������������ $HTTP_RAW_POST_DATA Ĭ��û����䣬 �ȼ��� always_populate_raw_post_data DZ����Ҫ���ٵ��ڴ档 enctype="multipart/form-data" ��ʱ�� php://input ����Ч�ġ�

Note: �� PHP 5.6 ֮ǰ php://input �򿪵�������ֻ�ܶ�ȡһ�Σ� ��������֧�� seek ������ ������������ SAPI ��ʵ�֣����������ݱ������ʱ�� �����Դ���һ�� php://input �����������¶�ȡ�� ͨ������£��������ֻ����� POST ���󣬶�������������ʽ������ PUT ���� PROPFIND��

php://output

php://output ��һ��ֻд���������� �������� print �� echo һ���ķ�ʽ д�뵽�����������

php://fd

php://fd ����ֱ�ӷ���ָ�����ļ��������� ���� php://fd/3 �������ļ������� 3��

php://memory �� php://temp

php://memory �� php://temp ��һ�������ļ� ��װ�����������������д��ʱ���ݡ� ���ߵ�Ψһ������ php://memory ���ǰ����ݴ������ڴ��У� �� php://temp �����ڴ����ﵽԤ��������ƺ�Ĭ���� 2MB��������ʱ�ļ��С� ��ʱ�ļ�λ�õľ����� sys_get_temp_dir() �ķ�ʽһ�¡�

php://temp ���ڴ����ƿ�ͨ����� /maxmemory:NN �����ƣ�NN �����ֽ�Ϊ��λ���������ڴ�������������������ʹ����ʱ�ļ���

php://filter

php://filter ��һ��Ԫ��װ���� ���������������ʱ��ɸѡ����Ӧ�á� �����һ��ʽ��all-in-one�����ļ������dz����ã����� readfile()�� file() �� file_get_contents()�� �����������ݶ�ȡ֮ǰû�л���Ӧ��������������

php://filter Ŀ��ʹ�����µIJ�����Ϊ��·����һ���֡� ���Ϲ������ܹ���һ��·����ָ������ϸʹ����Щ�������Բο����巶����

php://filter ����
���� ����
resource=<Ҫ���˵�������> ��������DZ���ġ���ָ������Ҫɸѡ���˵���������
read=<������ɸѡ�б�> �ò�����ѡ�������趨һ���������������ƣ��Թܵ�����|���ָ���
write=<д����ɸѡ�б�> �ò�����ѡ�������趨һ���������������ƣ��Թܵ�����|���ָ���
<����������ɸѡ�б�> �κ�û���� read= �� write= ��ǰ׺ ��ɸѡ���б�������Ӧ���ڶ���д����

��ѡ��

��װЭ��ժҪ����� php://filter���ο���ɸѡ�ķ�װ������
���� ֧��
������ allow_url_fopen No
������ allow_url_include �� php://input�� php://stdin�� php://memory �� php://temp��
�����ȡ �� php://stdin�� php://input�� php://fd�� php://memory �� php://temp��
����� �� php://stdout�� php://stderr�� php://output�� php://fd�� php://memory �� php://temp��
����׷�� �� php://stdout�� php://stderr�� php://output�� php://fd�� php://memory �� php://temp������д�룩
����ͬʱ��д �� php://fd�� php://memory �� php://temp��
֧�� stat() �� php://memory �� php://temp��
֧�� unlink() No
֧�� rename() No
֧�� mkdir() No
֧�� rmdir() No
����֧�� stream_select() php://stdin�� php://stdout�� php://stderr�� php://fd �� php://temp��

������־

�汾 ˵��
5.6.0 php://input �ɷ���ʹ�á�
5.3.6 ���� php://fd��
5.1.0 ���� php://memory �� php://temp��
5.0.0 ���� php://filter��

����

Example #1 php://temp/maxmemory

�����ѡѡ���������� php://temp ��ʼʹ����ʱ�ļ�ǰ������ڴ����ơ�

<?php
// Set the limit to 5 MB.
$fiveMBs 1024 1024;
$fp fopen("php://temp/maxmemory:$fiveMBs"'r+');

fputs($fp"hello\n");

// Read what we have written.
rewind($fp);
echo 
stream_get_contents($fp);
?>

Example #2 php://filter/resource=<�����˵�������>

�����������λ�� php://filter ��ĩβ������ָ����Ҫ����ɸѡ����������

<?php
/* ��򵥵�ͬ�ڣ�
  readfile("http://www.example.com");
  ʵ����û��ָ�������� */

readfile("php://filter/resource=http://www.example.com");
?>

Example #3 php://filter/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");
?>

Example #4 php://filter/write=<д����ҪӦ�õĹ������б�>

�����������һ�����Թܵ��� | �ָ��Ķ�����������ơ�

<?php
/* ���ͨ�� rot13 ������ɸѡ���ַ� "Hello World"
  Ȼ��д�뵱ǰĿ¼�µ� example.txt */
file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?>

Example #5 php://memory �� php://temp ��һ���Ե�

php://memory �� php://temp ��һ���Եģ����磺stream ���رպ󣬾��޷��ٴεõ���ǰ�������ˡ�

file_put_contents('php://memory', 'PHP');
echo file_get_contents('php://memory'); // ɶҲû��