Forum und email

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 Imágenes.

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 ("https://www.example.com/""r");
if (!
$file) {
    echo 
"<p>Unable to open remote file.\n";
    exit;
}
while (!
feof ($file)) {
    
$line fgets ($file1024);
    
/* 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:[email protected]/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().