Соединение/аутентификация WebDav с помощью PHP
-
13-09-2019 - |
Вопрос
Итак, PHP-скрипт существует на сервере А.На сервере ServerA включен безопасный режим php и отключен WebDAV.Я не могу изменить ни один из этих факторов.Я хочу, чтобы сценарий на сервере А получал логин/пароль пользователя для другого сервера, который мы назовем сервером Б.На сервере B включен WebDAV.
Конечная цель состоит в том, что пользователь перейдет к сценарию на сервере ServerA, введет свои учетные данные для сервера B, а затем сценарий создаст файл iCal и разместит его на сервере B, что позволит пользователю затем подписаться на файл iCal с помощью Outlook/ GoogleCalendar и т. д. (для этого требуется, чтобы файл находился на сервере WebDAV).
Итак, я попробовал
fopen(servername/filename, r)
и смог читать файлы на удаленном сервере.Но когда я попробовал
fopen(servername/filename, w)
Я получаю сообщение об ошибке, что оболочка HTTP не поддерживает запись, а только чтение.
Короче говоря, есть ли способ подключиться к этому серверу и пройти аутентификацию, записать файл, а затем закрыть соединение БЕЗ использования какой-либо из уже существующих библиотек WebDAV для PHP и без возникновения ошибки разрешений в безопасном режиме?
Спасибо!
Решение
Проблема в том, что оболочка протокола HTTP для PHP не выполняет PUT.Вам следует попытаться написать свой собственный, либо с помощью fsockopen, либо, желательно, с помощью Curl.
http://ca3.php.net/manual/en/wrappers.http.php
Это не имеет ничего общего с безопасным режимом.
Другие советы
Проблема здесь в том, что безопасный режим предназначен для того, чтобы ограничить вас, чтобы вы не могли выполнять действия за пределами «безопасной» зоны.
Что вы могли бы попробовать (если можете) — это изменить safe_mode_exec_dir
в php.ini, вы можете запустить внешние программы, которые смогут записать файл за вас (если они находятся в этом каталоге безопасного режима).
Насчет аутентификации не уверен, возможно кто-то сможет ответить подробнее.