Capítulo 19. Usando archivos remotos

Siempre que el soporte para la " envoltura URL fopen " esté habilitado cuando se configura PHP (lo cual ocurre a menos que se pasa explícitamente la opción --disable-url-fopen-wrapper a configure (para versiones hasta la 4.0.3) , ó configurar como "off " el parámetro allow_url_fopen en php.ini (para las nuevas versiones) ) se pueden usar URLs HTTP y FTP con la mayoría de las funciones que toman un archivo como parámetro , incluyendo las sentencias require( ) e include( ) .

Nota : La versión actual de PHP para Windows no soporta el acceso remoto a ficheros en las siguientes funciones : include( ) , include_once( ) , require( ) y require_once( ) .



Por ejemplo , se puede usar este para abrir un archivo en un servidor web remoto , analizar en la salida la información que se quiera , y entonces , usar la información en una consulta a base de datos , o simplemente para sacarlas en un estilo que coincida con el resto de su sitio web .

Ejemplo 19-1 . Obtener el título de una página remota






También se puede escribir a archivos en un FTP siempre que se conecte como un usuario con los correctos derechos de acceso , y el archivo no exista ya.Para conectar como un usuario distinto de ' anonymous' , se necesita especificar el nombre de usuario (y posiblemente contraseña ) dentro de la URL , tales como 'ftp : / /usuario:clave@ftp.ejemplo.com / camino / a/archivo' . (Se puede usar la misma clase de sintaxis para acceder a archivos via HTTP cuando se requería una autenticació de same sort of syntax to access files via HTTP when they require Basic authentication . )

Ejemplo 19-2 . Almacenando datos en un servidor remoto

 
?php

 
$file

 
=

 
fopen

 
(

 
"ftp

 
:

 
/

 
/ftp.example.com

 
/

 
incoming

 
/

 
outputfile"

 
,

 
"w")

 
;

 
if

 
(!$file

 
)

 
{

 
echo

 
"

 
p

 
Unable

 
to

 
open

 
remote

 
file

 
for

 
writing.\n"

 
;

 
exit

 
;

 
}

 
/

 
*

 
Write

 
the

 
data

 
here

 
.

 
*

 
/

 
fputs

 
($file

 
,

 
$HTTP_SERVER_VARS['HTTP_USER_AGENT'

 
]

 
.

 
"\n")

 
;

 
fclose

 
($file)

 
;

 
?





Nota : Podeis captar la idea en el ejemplo anterior de como escribir en un registro remoto , pero como ya hemos comentado antes , solamente se puede escribir a un fichero nuevo usando la " envoltura URL fopen " Para registros distribuidos , consultar la función syslog( ) .