Отказано в доступе для файла move_uploaded_file на другой сервер в IIS - PullRequest
3 голосов
/ 14 января 2011

У меня есть веб-приложение PHP, работающее на IIS, которое позволяет пользователю загружать файл из простой HTML-формы.Загруженный файл затем перемещается в папку на другом сервере.В Apache это работает правильно, но в IIS происходит сбой с ошибкой:

Функция ['move_uploaded_file'] не смогла открыть поток: В доступе отказано ...

Я проверил все разрешения на каталоги.Если я запускаю простой сценарий PHP через командную строку для копирования файла с сервера в папку на другом сервере, он работает правильно, поэтому я подозреваю, что проблема связана с IIS.

 if (move_uploaded_file($_FILES ["file"] ["tmp_name"], "\\\\000.00.0.00\\tia\\web\\upload\\" .$_FILES["file"]["name"])) {

Ответы [ 2 ]

1 голос
/ 16 января 2011

Это уже было рассмотрено здесь . Цитируя причину здесь:

Вы сопоставили целевой каталог с общим ресурсом, таким как \ server2 \ files. Эти сопоставления доступны только текущим пользователям (например, учетной записи администратора), но не той учетной записи IUSR, с которой, вероятно, работает ваш php (при условии IIS). Решение: не используйте сопоставления, вместо этого используйте полное имя пути 'unc', то есть '\ server \ share \ folder \ file.ext', также помните, что учетной записи IUSR потребуется доступ к этим общим папкам / папкам / файлам

1 голос
/ 14 января 2011

Из того, что я вижу в вашем комментарии, вы используете сетевой ресурс с префиксом \\ в качестве цели для move_uploaded_file() операции.

Держу пари, что PHP не имеет доступа к этой акции. Помните, что PHP работает с разрешениями IIS!

Попробуйте сначала сохранить в локальном глобально записываемом пути. Если это работает, вы знаете, что должны исправить разрешения для общего ресурса.

...