PHP, WebDAV · 3 min read · Dec 30, 2025

Установка расширения PHP WebDAV на Debian Squeeze

Установка расширения PHP WebDAV на Debian Squeeze

Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter

Эта статья показывает, как установить расширение PHP WebDAV для PHP5 на системе Debian Squeeze. Расширение PHP WebDAV позволяет легко получать доступ к удаленным ресурсам через протокол DAV из PHP-скриптов.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

Я использую сервер Debian Squeeze. Я предполагаю, что Apache2 и PHP5 уже установлены и работают.

2 Установка расширения PHP WebDAV

Перед тем как установить расширение PHP WebDAV, нам нужно установить несколько зависимостей следующим образом:

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

Далее мы загружаем и распаковываем расширение 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

Затем мы переходим в директорию dav…

cd dav/

… и собираем расширение PHP WebDAV:

phpize  
./configure --enable-dav  
make install

Чтобы включить расширение, мы создаем файл /etc/php5/conf.d/dav.ini…

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

| extension=dav.so |

… и перезапускаем Apache:

/etc/init.d/apache2 restart

Вот и все!

3 Использование расширения PHP WebDAV

Вот небольшой PHP-скрипт, который демонстрирует, как вы можете использовать расширение PHP WebDAV:

| |

Этот пример должен быть довольно понятным, однако также есть файл README в загруженном исходном пакете PHP WebDAV, который содержит полную справку по функциям:

*.:. Расширение PHP WebDAV .:.

  • *———————— ОПИСАНИЕ ————————
  • Расширение PHP WebDAV позволяет легко получать доступ к удаленным ресурсам через протокол DAV. Оно основано на библиотеке Neon. Домашняя страница расширения PHP WebDAV - http://php-webdav.pureftpd.org *Пожалуйста, сообщайте об ошибках и предложениях на j pureftpd org
  • *———————— УСТАНОВКА ————————
  • Это расширение требует библиотеку Neon и связанные заголовочные файлы. Neon можно скачать с: http://www.webdav.org/neon/ Предварительно собранные пакеты и порты уже доступны для большинства операционных систем и дистрибутивов. Чтобы скомпилировать и установить расширение PHP WebDAV, просто следуйте стандартной процедуре PECL : *$ phpize
    $ ./configure –enable-dav

$ env AUTOCONF_VERSION=2.61 phpize (замените 2.61 на любую из текущих установленных версий autoconf на вашей системе) ———————— ОСНОВНОЙ ПРИМЕР ————————

  • *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();
  • *———————— ПРИМЕР ИМЕННОГО РЕСУРСА ————————
  • *$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);
  • *———————— УСТАНОВЛЕНИЕ СОЕДИНЕНИЯ ————————
  • Чтобы установить новое соединение, используйте: webdav_connect(string base_url [, string user [, string password [, int timeout]]] Примеры: 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)
    Закрытие сессии требует лишь вызова webdav_close() : webdav_close()
    webdav_close($resource)
    Базовый URL - это строка, которая будет конкатенирована с частями URI других функций, чтобы получить полный URL ресурса. Примеры: webdav_connect(‘http://webdav.example.org/dav/‘);
    $a = webdav_get(‘nice/object.txt’);
    => получить http://webdav.example.org/dav/nice/object.txt webdav_connect(‘http://webdav.example.org/dav’);
    $a = webdav_get(‘/nice/object.txt’);
    => также получить http://webdav.example.org/dav/nice/object.txt webdav_connect(‘http://webdav.example.org/dav’);
    $a = webdav_get(‘nice/object.txt’);
    => Неправильно : получает http://webdav.example.org/davnice/object.txt webdav_connect(‘http://webdav.example.org/dav/‘);
    $a = webdav_get(‘/nice/object.txt’);
    => Неправильно : получает http://webdav.example.org/dav//nice/object.txt *В качестве альтернативы можно использовать имя webdav_open() вместо webdav_connect().
  • *———————— ПОЛУЧЕНИЕ РЕСУРСА ————————
  • Чтобы получить ресурс, используйте:
    webdav_get(string uri [, resource session])
    *Функция возвращает содержимое или FALSE, если произошла ошибка.
  • *———————— ХРАНЕНИЕ РЕСУРСА ————————
  • *Хранение ресурса доступно через функцию webdav_put():
    webdav_put(string uri, string data [, resource session])
  • *———————— УДАЛЕНИЕ РЕСУРСА ————————
  • webdav_delete() удаляет ресурс :
    webdav_delete(string uri [, resource session])
    *В качестве альтернативы можно использовать имена webdav_unlink(), webdav_remove() и webdav_rmdir() вместо webdav_delete().
  • *———————— СОЗДАНИЕ КОЛЛЕКЦИИ ————————
  • Коллекция (представьте это как подкаталог, если вы не знакомы с DAV) создается с помощью функции webdav_mkcol() : bool webdav_mkcol(string uri [, resource session]) *В качестве альтернативы можно использовать имя webdav_mkdir() вместо webdav_mkcol().
  • *———————— КОПИРОВАНИЕ РЕСУРСА ————————
  • Если сервер это поддерживает, ресурсы могут быть скопированы: webdav_copy(string source_uri, string target_uri [, bool overwrite [, bool recursive [, resource session]]]) *По умолчанию ресурсы могут быть перезаписаны и копируются рекурсивно.
  • *———————— ПЕРЕМЕЩЕНИЕ/ПЕРЕИМЕНОВАНИЕ РЕСУРСА ————————
  • Ресурсы также могут быть перемещены или переименованы: webdav_move(string source_uri, string target_uri [, bool overwrite, [, resource session]]) *В качестве альтернативы можно использовать имя webdav_rename() вместо webdav_move().
  • *—————————— PHP STREAM API ——————————
  • В качестве альтернативы функциям webdav_() файл davstream.inc.php может быть включен в ваши проекты, чтобы DAV-серверы могли быть доступны через стандартные вызовы PHP, через потоки 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’); ?> Это немного медленнее, чем нативные функции webdav*().

4 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.