WebDav соединение / аутентификация с PHP - PullRequest
1 голос
/ 23 апреля 2009

Хорошо, поэтому скрипт PHP существует на сервере А. На сервере А включен безопасный режим php и отключен WebDAV. Я не могу изменить ни один из этих факторов. Я хочу, чтобы на сервере A был скрипт для получения логина / пароля пользователя для другого сервера, который мы назовем serverB. На сервере B включен WebDAV.

Конечной целью является то, что пользователь перейдет к сценарию на сервере ServerA, введет свои учетные данные для сервера B, а затем сценарий создаст файл iCal и разместит его на сервере B, что позволит пользователю затем подписаться на файл iCal. используя Outlook / GoogleCalendar и т. д. (для этого требуется, чтобы файл находился на сервере WebDAV).

Итак, я попробовал

fopen(servername/filename, r) 

и смог прочитать файлы на удаленном сервере. Но когда я попробовал

fopen(servername/filename, w)

Я получаю сообщение об ошибке, что обертка HTTP не поддерживает запись, только чтение.

Короче говоря, есть ли способ подключиться к этому серверу и выполнить аутентификацию, написать файл, а затем закрыть соединение БЕЗ использования любой из уже существующих библиотек WebDAV для PHP и без попадания в ошибку разрешений безопасного режима

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 апреля 2009

Проблема в том, что оболочка протокола HTTP для PHP не выполняет PUT. Вы должны попытаться написать свое собственное, либо с помощью fsockopen, либо, желательно, с помощью curl.

http://ca3.php.net/manual/en/wrappers.http.php

Это не имеет ничего общего с безопасным режимом.

0 голосов
/ 23 апреля 2009

Проблема здесь в том, что безопасный режим предназначен для того, чтобы ограничивать вас, чтобы вы не могли выполнять вещи вне вашей «безопасной» зоны.

То, что вы можете попробовать (если можете), это изменить safe_mode_exec_dir в php.ini, тогда вы сможете запускать внешние программы, которые могли бы записать файл для вас (если они находятся в этом каталоге безопасного режима

Насчет аутентификации, я не уверен, возможно, кто-то может ответить на это более подробно.

...