allow_url_fopen, Usando archivos remotos en php

Siempre que allow_url_fopen este habilitado en php.ini, se pueden usar URLs HTTP y FTP con la mayoría de las funciones que toman un nombre de archivo como parámetro. Además, las URLs pueden ser usadas con las declaraciones include, include_once, require y require_once (desde PHP 5.2.0, allow_url_include debe ser habilitado para esto). Ver Protocolos y Envolturas soportados para más información de los protocolos soportados por PHP.

 

 

Nota:

Las versiones Windows de PHP más nuevas a la PHP 4.3 no soportan acceso remoto a los archivos por las siguientes funciones: include,include_once, require, require_once, y las funciones imagecreatefromXXX en la extensión Funciones de GD e Imágenes

Ejemplo #1 Obteniendo el titulo de una página remota

$file = fopen ("http://www.example.com/", "r");
if (!$file) {
    echo "

Imposible abrir el archivo remoto.\n"; exit; } while (!feof ($file)) { $line = fgets ($file, 1024); /* Esto solo trabaja si el titulo y sus tags estan en una línea */ if (preg_match ("@\

También se pueden escribir archivos en un servidor FTP (considerando que se esta conectado como un usuario con los permisos de acceso correctos). Se pueden crear únicamente archivos nuevos usando este método. Si se intenta sobreescribir un archivo que ya existe, la llamada a la función fopen() fallará.

Para conectarse como un usuario diferente a ‘anonymous’, se necesita especificar el usuario (y posiblemente el password) con la URL, tal como ‘ftp://user:[email protected]/path/to/file‘. (Se puede usar la misma sintaxis para accesar archivos vía HTTP cuando se requiere autenticación básica).

Ejemplo #2 Almacenando datos en un servidor remoto

$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
if (!$file) {
    echo "

Imposible abrir el archivo remoto para escritura.\n"; exit; } /* Escribir los datos aqui. */ fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n"); fclose ($file);

Nota:

Se podría tener la idea del ejemplo anterior que se esta usando esta técnica para escribir un archivo de log remoto. Desafortunadamente esto no funcionaría porque la función fopen() llamada fallará si el archivo remoto ya existe. Para hacer logs distribuidos como ese, se debería dar un vistazo a syslog().

php.net

Leave a Reply

Your email address will not be published. Required fields are marked *