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 Ссылки
- Расширение PHP WebDAV: http://php-webdav.pureftpd.org/project/php-webdav
- WebDAV: http://www.webdav.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.