PHP WebDAV · 4 min read · Dec 30, 2025

Instalando la extensión PHP WebDAV en Debian Squeeze

Instalando la extensión PHP WebDAV en Debian Squeeze

Versión 1.0
Autor: Falko Timme
Sígueme en Twitter

Este artículo muestra cómo puedes instalar la extensión PHP WebDAV para PHP5 en un sistema Debian Squeeze. La extensión PHP WebDAV permite el acceso fácil a recursos remotos a través del protocolo DAV desde scripts PHP.

¡No emito ninguna garantía de que esto funcione para ti!

1 Nota Preliminar

Estoy usando un servidor Debian Squeeze aquí. Asumo que Apache2 y PHP5 ya están instalados y funcionando.

2 Instalando la extensión PHP WebDAV

Antes de instalar la extensión PHP WebDAV, necesitamos instalar algunas dependencias como sigue:

apt-get install php5-dev build-essential libneon27 libneon27-dev

A continuación, descargamos y descomprimimos la extensión PHP WebDAV:

cd /tmp  
wget http://download.pureftpd.org/php-webdav/php-webdav-1.2.tar.gz  
tar xvfz php-webdav-1.2.tar.gz

Luego cambiamos al directorio dav…

cd dav/

… y construimos la extensión PHP WebDAV:

phpize  
./configure --enable-dav  
make install

Para habilitar la extensión, creamos el archivo /etc/php5/conf.d/dav.ini…

vi /etc/php5/conf.d/dav.ini

| extension=dav.so |

… y reiniciamos Apache:

/etc/init.d/apache2 restart

¡Eso es todo!

3 Usando la extensión PHP WebDAV

Aquí hay un pequeño script PHP que demuestra cómo puedes usar la extensión PHP WebDAV:

| |

Ese ejemplo debería ser bastante autoexplicativo, sin embargo, también hay un archivo README en el paquete fuente de PHP WebDAV que has descargado que contiene una referencia completa de funciones:

*.:. Extensión PHP WebDAV .:.

  • *———————— BLURB ————————
  • La extensión PHP WebDAV permite el acceso fácil a recursos remotos a través del
    protocolo DAV.
    Se basa en la biblioteca de referencia Neon. La página de inicio de la extensión PHP WebDAV es http://php-webdav.pureftpd.org *Por favor, reporta errores y sugerencias a j pureftpd org
  • *———————— INSTALACIÓN ————————
  • Esta extensión requiere la biblioteca Neon y los archivos de encabezado relacionados. Neon se puede descargar de: http://www.webdav.org/neon/ Los paquetes y puertos preconstruidos ya están disponibles para la mayoría de los sistemas operativos
    y distribuciones.
    Para compilar e instalar la extensión PHP WebDAV, solo sigue el
    procedimiento estándar de PECL :
    *$ phpize
    $ ./configure –enable-dav

$ env AUTOCONF_VERSION=2.61 phpize (reemplaza 2.61 con cualquiera de las versiones actualmente instaladas de autoconf en tu
sistema) ———————— EJEMPLO BÁSICO ————————

  • *webdav_connect(‘http://webdav.example.com/dav’, ‘davuser’, ‘davpassword’);
    $a = webdav_get(‘/my/nice/object.txt’);
    webdav_put(‘/your/nice/thing.txt’, $data);
    webdav_unlink(‘/unwanted_resource.txt’);
    webdav_rename(‘/dir/old_name’, ‘/dir/new_name’);
    webdav_copy(‘/dir/orig_dir’, ‘/dir/new_dir’, TRUE);
    webdav_close();
  • *———————— EJEMPLO DE RECURSO NOMBRADO ————————
  • *$res = webdav_connect(‘http://webdav.example.com/dav’, ‘davuser’, ‘davpassword’);
    $a = webdav_get(‘/my/nice/object.txt’, $res);
    webdav_put(‘/your/nice/thing.txt’, $data, $res);
    webdav_unlink(‘/unwanted_resource.txt’, $res);
    webdav_rename(‘/dir/old_name’, ‘/dir/new_name’, $res);
    webdav_copy(‘/dir/orig_dir’, ‘/dir/new_dir’, TRUE, $res);
    webdav_close($res);
  • *———————— ESTABLECIENDO UNA CONEXIÓN ————————
  • Para establecer una nueva conexión, usa: webdav_connect(string base_url [, string user [, string password
    [, int timeout]]]
    Ejemplos: webdav_connect(‘http://webdav.example.org/dav/‘)
    webdav_connect(‘http://webdav.example.org/dav/‘, ‘myuser’, ‘mypassword’)
    webdav_connect(‘http://webdav.example.org/dav/‘, ‘myuser’, ‘mypassword’, 10)
    Cerrar una sesión solo requiere una llamada a webdav_close() : webdav_close()
    webdav_close($resource)
    La URL base es una cadena que se concatenará a las partes URI de otras
    fuciones para obtener la URL completa del recurso.
    Ejemplos: webdav_connect(‘http://webdav.example.org/dav/‘);
    $a = webdav_get(‘nice/object.txt’);
    => obtener http://webdav.example.org/dav/nice/object.txt webdav_connect(‘http://webdav.example.org/dav’);
    $a = webdav_get(‘/nice/object.txt’);
    => también obtener http://webdav.example.org/dav/nice/object.txt webdav_connect(‘http://webdav.example.org/dav’);
    $a = webdav_get(‘nice/object.txt’);
    => INCORRECTO : obtiene http://webdav.example.org/davnice/object.txt webdav_connect(‘http://webdav.example.org/dav/‘);
    $a = webdav_get(‘/nice/object.txt’);
    => INCORRECTO : obtiene http://webdav.example.org/dav//nice/object.txt *Como alternativa, el nombre webdav_open() puede ser usado en lugar de
    webdav_connect().
  • *———————— OBTENIENDO UN RECURSO ————————
  • Para obtener un recurso, usa:
    webdav_get(string uri [, resource session])
    *La función devuelve el contenido, o FALSE si ocurrió un error.
  • *———————— ALMACENANDO UN RECURSO ————————
  • *Almacenar un recurso está disponible a través de la función webdav_put():
    webdav_put(string uri, string data [, resource session])
  • *———————— ELIMINANDO UN RECURSO ————————
  • webdav_delete() elimina un recurso :
    webdav_delete(string uri [, resource session])
    *Como alternativa, los nombres webdav_unlink(), webdav_remove() y
    webdav_rmdir() pueden ser usados en lugar de webdav_delete().
  • *———————— CREANDO UNA COLECCIÓN ————————
  • Una colección (piensa en ello como un subdirectorio si no estás familiarizado con
    DAV) se crea con la función webdav_mkcol() :
    bool webdav_mkcol(string uri [, resource session]) *Como alternativa, el nombre webdav_mkdir() puede ser usado en lugar de
    webdav_mkcol().
  • *———————— COPIANDO UN RECURSO ————————
  • Si el servidor lo implementa, los recursos pueden ser copiados: webdav_copy(string source_uri, string target_uri
    [, bool overwrite [, bool recursive [, resource session]]])
    *Por defecto, los recursos pueden ser sobrescritos y se copian recursivamente.
  • *———————— MOVIENDO/RENOMBRANDO UN RECURSO ————————
  • Los recursos también pueden ser movidos o renombrados: webdav_move(string source_uri, string target_uri
    [, bool overwrite, [, resource session]])
    *Como alternativa, el nombre webdav_rename() puede ser usado en lugar de
    webdav_move().
  • *—————————— API DE FLUJO PHP ——————————
  • Como alternativa a las funciones webdav_(), el archivo davstream.inc.php puede ser
    incluido en tus proyectos para que los servidores DAV puedan ser alcanzados a través de llamadas estándar
    PHP, a través de flujos webdav://:
    require ‘dav_stream.inc.php’; $fp = fopen(‘webdav://dav.example.com/dav/dir/file.txt’, ‘w’);
    fwrite($fp, “test\n”);
    fclose($fp);
    $data = file_get_contents(‘webdav://dav.example.com/dav/dir/file.txt’);
    $st = stat(‘webdav://dav.example.com/dav/dir/file.txt’);
    copy(‘/tmp/xyz.txt’, ‘webdav://dav.example.com/dav/dir/xyz.txt’);
    unlink(‘webdav://dav.example.com/dav/dir/abc.txt’); ?> Esto es un poco más lento que las funciones nativas webdav*().

4 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.