Lista de Protocolos/Envolturas Soportados
PHP Manual

Flujos de entrada/salida de PHP

php://stdin, php://stdout y php://stderr permiten acceder directamente al flujo correspondiente de entrada o salida del proceso PHP. El flujo hace referencia a un descriptor de fichero duplicado, de modo que si se abre php://stdin y más tarde se cierra, sólo se cerraría la copia del descriptor--el flujo real al que referencia STDIN no se vería afectado. Tenga en cuenta que en versiones de PHP anteriores a la 5.2.1, se presenta un comportamiento irregular. Se recomienda utilizar las constantes STDIN, STDOUT y STDERR en lugar de abrir flujos manualmente usando estas envolturas.

php://output permite escribir en el buffer de salida de la misma manera que lo harían print() y echo().

php://input permite leer datos a partir del cuerpo solicitado. En el caso de peticiones POST, es preferible a $HTTP_RAW_POST_DATA ya que no depende de diretivas php.ini especiales. Sin embargo, cuando no se genera automáticamente $HTTP_RAW_POST_DATA, se trata de una alternativa que hace un uso menos intensivo de memoria que activando always_populate_raw_post_data. php://input no está disponible con enctype="multipart/form-data".

Note: Los flujos que se abren con php://input sólo pueden leerse una vez; no hay soporte para operaciones de búsqueda. Pero, dependiendo de la SAPI, podría ser posible abrir otro flujo php://input para reiniciar la lectura. Esto sólo es posible si los datos de la petición se han guardado. Este caso es típico en peticiones POST, pero no en otros métodos de petición, como por ejemplo PUT o PROPFIND.

php://stdin y php://input son de solo lectura, mientras que php://stdout, php://stderr y php://output son de sólo escritura.

php://filter es una especie de meta-envoltura diseñada para permitir el filtrado de flujos en las aperturas. Esto es muy útil en las funciones todo en uno, como readfile(), file(), y file_get_contents() donde, por otra parte, no se pueden aplicar filtros a los flujos antes de que se lea su contenido.

php://filter tiene los siguientes 'parámetros' incorporados en su 'ruta'.

La envoltura php://memory almacena los datos en memoria. php://temp se comporta de una forma parecida, pero en su lugar, utiliza un fichero temporal para almacenar los datos una vez que se supera un determinado umbral de memoria (por omisión es 2 MB).

La envoltura php://temp acepta los siguientes 'parámetros' como parte de su 'ruta':

Resumen de la Envoltura (Para php://filter, consúltese el resumen de la envoltura que se filtra.)
Atributo Permitido
Restringido por allow_url_fopen No
Restringido por allow_url_include solo php://input, php://stdin, php://memory y php://temp.
Permite Lecturas solo php://stdin, php://input, php://memory y php://temp.
Permite Escrituras solo php://stdout, php://stderr, php://output, php://memory y php://temp.
Permite Añadir contenidos solo php://stdout, php://stderr, php://output, php://memory y php://temp. (Equivalente a escrituras)
Permite Lecturas y Escrituras Simultáneas solo php://memory y php://temp.
Permite usar la función stat() solo php://memory y php://temp .
Permite usar la función unlink() No
Permite usar la función rename() No
Permite usar la función mkdir() No
Permite usar la función rmdir() No
Supports stream_select() php://stdin, php://stdout, php://stderr y php://temp.


Lista de Protocolos/Envolturas Soportados
PHP Manual