FTP y FTPS
Secuencias de Compresión
Lista de Protocolos/Envolturas Soportadas
PHP Manual

## Secuencias de entrada/salida PHP

- php://stdin
- php://stdout
- php://stderr
- php://output
- php://input
- php://filter (disponible desde PHP 5.0.0)
- php://memory (disponible desde PHP 5.1.0)
- php://temp (disponible desde PHP 5.1.0)

php://stdin, php://stdout y php://stderr le ofrecen acceso a las secuencias de entrada o salida correspondientes del proceso PHP. La secuencia hace referencia a un descriptor de archivo duplicado, de modo que si abre php://stdin y luego lo cierra, estará cerrando únicamente su copia del descriptor--la secuencia realmente referenciada por `STDIN` no es afectada. Note que PHP exhibía un comportamiento incorrecto en este sentido hasta PHP 5.2.1. Es recomendable que simplemente use las constantes `STDIN`, `STDOUT` y `STDERR` en lugar de abrir manualmente las secuencias usando estas envolturas.

php://output le permite escribir sobre el mecanismo de búfer de salida en la misma manera que lo hacen print() y echo().

php://input le permite leer datos POST en su forma primitiva. Es una alternativa que consume menos memoria que $HTTP_RAW_POST_DATA y no requiere de directivas php.ini especiales. php://input no se encuentra disponible con enctype="multipart/form-data".

php://stdin y php://input son de sólo-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 uso de filtros sobre una secuencia al momento de su apertura. Resulta útil con aquellas funciones de archivos todo-en-uno, como readfile(), file(), y file_get_contents() en donde de otro modo no habría forma de aplicar filtros a la secuencia antes de que los contenidos fueran leídos.

El destino php://filter recibe los siguientes 'parámetros' como partes de su 'ruta'.

- /resource=<secuencia a ser filtrada> (requerido) Este parámetro debe estar ubicado el final de su especificación php://filter y debe apuntar a la secuencia que desea filtrar.

  `<?php
  /* Esto es equivalente a simplemente:
  readfile("http://www.example.com");
  ya que no se aplica filtro alguno */
  readfile("php://filter/resource=http://www.example.com");
  ?>`

- /read=<lista de filtros a aplicar a la cadena de lectura> (opcional) Este parámetro toma uno o más nombres de filtros separados por el caracter |.

  `<?php
  /* Esto produce como salida el contenido de
  www.example.com enteramente en mayúsculas */
  readfile("php://filter/read=string.toupper/resource=http://www.example.com");
  /* Esto hace lo mismo pero también codifica la salida con ROT13 */
  readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
  ?>`

- /write=<lista de filtros a aplicar a la cadena de escritura> (opcional) Este parámetro toma uno o más nombres de filtro separados por el caracter |.

  `<?php
  /* Esto filtra la cadena "Hola Mundo" a través del filtro rot13,
  luego escribe al archivo ejemplo.txt en el directorio actual */
  file_put_contents("php://filter/write=string.rot13/resource=ejemplo.txt","Hola Mundo");
  ?>`

- /<lista de filtros a aplicar a ambas cadenas> (opcional) Cualquier lista de filtros que no esté precedida por read= o write= será aplicada tanto a la cadena de lectura como a la de escritura (según sea el caso).

La envoltura php://memory almacena los datos en memoria. php://temp se comporta de forma similar, pero usa un archivo temporal para almacenar los datos cuando se alcanza cierto límite de memoria (el valor predeterminado es 2 MB).

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

- /maxmemory:<número de bytes> (opcional). Este parámetro permite modificar el valor predeterminado para el límite de memoria (cuando los datos son movido a un archivo temporal).

  `<?php
  $cincoMBs = 5 * 1024 * 1024;
  $da = fopen("php://temp/maxmemory:$cincoMBs", 'r+');
  fputs($da, "hola\n");
  // leer lo que hemos escrito
  rewind($da);
  echo stream_get_contents($da);
  ?>`

Resumen de Envoltura (Para php://filter, refiérase al resumen de la envoltura siendo filtrada.)
Atributo | Soporte
--- | ---
Restricción por allow_url_fopen | No
Restricción por allow_url_include | php://input, php://stdin, php://memory y php://temp únicamente.
Permite Lectura | php://stdin, php://input, php://memory y php://temp únicamente.
Permite Escritura | php://stdout, php://stderr, php://output, php://memory y php://temp únicamente.
Permite Adición | php://stdout, php://stderr, php://output, php://memory y php://temp únicamente. (Equivalente a la escritura)
Permite Lectura y Escritura Simultánea | php://memory y php://temp únicamente.
Soporte stat() | php://memory y php://temp únicamente.
Soporte unlink() | No
Soporte rename() | No
Soporte mkdir() | No
Soporte rmdir() | No

FTP y FTPS
Secuencias de Compresión
Lista de Protocolos/Envolturas Soportadas
PHP Manual