Проблема с разрешениями при загрузке изображений с использованием PHP в IIS
-
05-07-2019 - |
Вопрос
Мы только что переместили веб-сайт на новый сервер, оба сервера работают под управлением Windows Server 2003 с IIS в качестве веб-сервера.
При загрузке изображений мы требуем, чтобы загруженные файлы имели определенные разрешения для учетной записи NETWORK SERVICE. Изображения загружаются с использованием PHP, затем они фильтруются ImageMagick с использованием двоичного файла mogrify.exe для изменения размера и помещаются в новую папку, созданную PHP.
Проблема, с которой мы сталкиваемся, заключается в том, что загруженный файл не наследует разрешения NETWORK SERVICE, хотя папка имеет.
Я запустил filemon, чтобы увидеть все ошибки и получить следующее:
mogrify.exe: 6396 ОТКРЫТЬ C: \ inetpub \ wwwroot \ example.com \ data \ 334480 \ test.jpg ОТКЛЮЧЕННЫЙ ДОСТУП ДЛЯ NT AUTHORITY \ NETWORK SERVICE
Причина, по которой нам требуется доступ к NETWORK SERVICE, заключается в сценарии ASP.NET, который мы используем для изменения размера изображения на лету. Я искал в Google, но не могу найти решение. Есть идеи?
Решение
Успешно решив проблему, я изменил dmp загрузки tmp в php.ini на C: \ Test и дал Test необходимые мне права доступа. Я уже сделал это изменение, но при дальнейшей проверке upload_tmp_dir дважды устанавливается в php. INI-файл. Загруженные файлы наследуют разрешения временного каталога.
Другие советы
Вы убедились, что " СЕТЕВАЯ СЛУЖБА " ACL применяется к «этой папке, подпапкам и файлам», где бы она ни применялась. Кроме того, попробуйте создать новую папку где-нибудь еще с тем же списком ACL и посмотрите, не наследуют ли файлы, созданные в PHP, разрешение.