2011-08-16 28 views
10
$handle = fopen("/home/rasmus/file.txt", "r"); 
$handle = fopen("/home/rasmus/file.gif", "wb"); 

Entiendo que /home/rasmus/file.txt y son la ruta del archivo.php: // input - ¿Qué hace en fopen()?

Pero lo que esto significa:

php://input 
php://temp 

en

$objInputStream = fopen("php://input", "r"); 
$objTempStream = fopen("php://temp", "w+b"); 

¿Qué hacen?

+1

Vea [PHP input/output streams] (http://php.net/manual/en/wrappers.php.php). – netcoder

Respuesta

7

php://input es una secuencia de solo lectura que le permite leer datos brutos del cuerpo de la solicitud. En el caso de solicitudes POST, es preferible a $HTTP_RAW_POST_DATA ya que no depende de directivas php.ini especiales. Además, para aquellos casos en los que $HTTP_RAW_POST_DATA no está poblado por defecto, es una alternativa potencialmente menos intensiva de memoria a la activación de always_populate_raw_post_data. La entrada php: // no está disponible con enctype="multipart/form-data".

Salida del manual: http://php.net/manual/en/wrappers.php.php

+0

La última oración ya no es precisa. Al establecer ['enable_post_data_reading = 0'] (http://php.net/manual/en/ini.core.php#ini.enable-post-data-reading), se deshabilita el análisis de' php: // input' transmitir en '$ _FILES', haciendo' php: // input' legible para solicitudes de varias partes. – Dave

6

php://temp almacena los datos en un archivo temporal que sólo es accesible para la duración de la ejecución del script. Es un archivo real, pero se limpia tan pronto como termina el script a diferencia de un archivo verdadero abierto con fopen(), que persistirá en el sistema de archivos.

php://input se utiliza para leer el cuerpo de solicitud HTTP sin procesar, sin tener abstractas las variables $_POST y $_SERVER. La secuencia php://input daría acceso a toda la solicitud HTTP cuando el servidor la entregó al intérprete PHP.

+3

No del todo cierto: * "php: // temp usará un archivo temporal una vez que la cantidad de datos almacenados alcance un límite predefinido (el valor predeterminado es 2 MB)." * – netcoder

3

Esos son stream wrappers y le permiten leer de varias corrientes. La lectura y escritura en la transmisión se realiza de la misma manera que con el archivo (puede existir alguna limitación, por ejemplo, no todas las secuencias de flujo admiten fseek). php://input le da acceso a los datos HTTP sin formato (está disponible en $ HTTP_RAW_POST_DATA si el servidor está configurado para rellenarlo previamente). Óptimo: lea la sección correspondiente en la documentación

+0

... entonces, ¿qué hacen los indicadores de modificación? – Pacerier