PHP 4, PHP 5. https:// disponible desde PHP 4.3.0
Permite acceso de lectura a ficheros/recursos mediante HTTP 1.0, utilizando el método GET de HTTP. Junto con la petición, se envía una cabecera Host: para así poder usar hosts virtuales basados en nombres. Si se ha definido un user_agent en el fichero php.ini o en el contexto del flujo, éste se incluirá también en la petición.
Cuando se usa SSL, Microsoft IIS violará el protocolo, cerrando la conexión sin mandar un indicador close_notify. PHP avisará de esto con este mensaje "SSL: Fatal Protocol Error", cuando llegue al final de los datos. Una solución a este problema es bajar el nivel de aviso de errores del sistema para que no incluya advertencias. PHP 4.3.7 y versiones posteriores detectan servidores IIS con este problema y suprime la advertencia. Si usáis la función fsockopen() para crear un socket ssl://, tendréis que suprimir la advertencia explicitamente.
Desde PHP 4.0.5 hay soporte para redirecciones; si se está utilizando una versión anterior, será necesario añadir las barras finales en las URLs. Si se necesitara conocer la URL de la que procede un determinado recurso (una vez que se han procesado todas las redirecciones), se tendrán que procesar todas las cabeceras de la respuesta que ha devuelto el flujo.
<?php
$url = 'http://www.example.com/redirecting_page.php';
$fp = fopen($url, 'r');
/* Antes de PHP 4.3.0 debía usarse $http_response_header
en lugar de stream_get_meta_data() */
$meta_data = stream_get_meta_data($fp);
foreach($meta_data['wrapper_data'] as $response) {
/* ¿Dónde se ha redirigido? */
if (substr(strtolower($response), 0, 10) == 'location: ') {
/* actualizar la $url a la que nos han redirigido */
$url = substr($response, 18);
}
}
?>
El flujo proporciona acceso al cuerpo del recurso; las cabeceras se guardan en la variable $http_response_header. Desde PHP 4.3.0, las cabeceras están disponibles mediante la función stream_get_meta_data().
Las conexiones HTTP son sólo de lecturas; no se puede ni escribir datos ni copiar ficheros en un recurso HTTP.
Note: Desde PHP 4.3.0 hay soporte para HTTPS, siempre y cuando se haya compilado con soporte para OpenSSL.
Si se ha definido la directiva from de php.ini, pero no se ha establecido la cabecera From: en el Opciones de contexto y parámetros, se utilizará este valor en la cabecera From: de la petición HTTP.
Atributo | Permitido |
---|---|
Restringido por allow_url_fopen | Sí |
Permite Lecturas | Sí |
Permite Escrituras | No |
Permite Añadir contenidos | No |
Permite Lecturas y Escrituras Simultáneas | N/A |
Permite usar la función stat() | No |
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 |
Si se usa una versión anterior a la 5, pueden enviarse las cabeceras deseadas en una petición HTTP aprovechando un efecto colateral de la directiva INI user_agent. Establezca un string válido en user_agent (como el valor por omisión de PHP/versión) seguido de un par retorno de carro/salto de línea y cualquier otra cabecera adicional. Este método funciona en PHP 4 o superior.
Example #1 Enviando cabeceras personalizadas en una petición HTTP
<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");
$fp = fopen('http://www.example.com/index.php', 'r');
?>
Como resultado se envía la siguiente cabera:
GET /index.php HTTP/1.0 Host: www.example.com User-Agent: PHP X-MyCustomHeader: Foo