Usando archivos remotos
Siempre que allow_url_fopen esté habilitado
en php.ini, se pueden usar URLs HTTP y
FTP con la mayoría de las funciones que
toman un archivo como parámetro. Además URLs pueden
ser usadas con include(),
include_once(), require() y
require_once(). Consultar Lista de Protocolos/Envolturas Soportadas para más información sobre los
protocolos soportados por PHP.
Note:
En PHP 4.0.3 y versiones anteriores, para usar envolturas URL,
habia que configurar PHP usando la opción de
configuración --enable-url-fopen-wrapper.
Note:
Las versiones para windows de PHP anteriores a PHP 4.3 no
soportaban acceso remoto a ficheros en las funciones siguientes:
include(), include_once(),
require(), require_once(), y
las funciones imagecreatefromXXX de la extensión GD Functions.
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.
Example #1 Obtener el título de una página remota
<?php
$file = fopen ("http://www.example.com/", "r");
if (!$file) {
echo "<p>Unable to open remote file.\n";
exit;
}
while (!feof ($file)) {
$line = fgets ($file, 1024);
/* This only works if the title and its tags are on one line */
if (eregi ("<title>(.*)</title>", $line, $out)) {
$title = $out[1];
break;
}
}
fclose($file);
?>
También se puede escribir a archivos en un servidor FTP
(siempre que se conecte como un usuario con los correctos derechos
de acceso). Solamente se pueden crear nuevos ficheros usando este
método; si se intenta sobreescribir un fichero ya existente,
la función fopen() fallará
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.example.com/ruta/hacia/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.)
Example #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. */
fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?>
Note:
Podeis creer por el ejemplo anterior, que podeis usar esta tecnica
para escribir en un fichero de registro remoto. Desgraciadamente
no funcionaria porque la llamada fopen()
fallaria si el fichero remoto existe. Para usar registros
distribuidos de esa manera podeis consultar la funcion
syslog().