Нечетные права доступа к файлу, измененному PHP move_uploaded_file ()

Я запускаю PHP 5.2.6 на Windows Server 2003 Enterprise. IIS настроен на запрет анонимного доступа и использование встроенной проверки подлинности Windows.

Я использую сценарий PHP для сохранения файла, загруженного из веб-формы. Файл загружается во временную папку, сценарий создает имя файла и путь в зависимости от других переменных из веб-формы, а затем сценарий использует PHP move_uploaded_file () для перемещения временного файла в окончательное расположение. Все это работает нормально. Короче говоря, люди загружают файлы, чтобы все в группе могли их видеть, а файлы упорядочиваются сценарием.

Моя проблема в том, что файл в последнем месте имеет странные разрешения. Это не заканчивается разрешениями ни из временного, ни из последнего местоположения. И временное, и конечное местоположение имеют одинаковые разрешения: полные права для владельца и администраций; читать и читать / выполнять для 2 конкретных групп безопасности AD. Окончательный файл имеет только: полные права для владельца и администраций. Таким образом, хотя администраторы и первоначальный загрузчик не имеют проблем с просмотром файла, все остальные в группе получают «доступ запрещен» при попытке доступа к нему.

Будем очень признательны за любые идеи или предложения! Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
8
0
6 687
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Похоже, это проблема с функцией move_uploaded_file():
http://us3.php.net/move_uploaded_file
Взгляните на комментарии ниже, обратите внимание на комментарий Флориана о copy ().

Может ли copy () решить проблему?:
http://us3.php.net/manual/en/function.copy.php

Нет проблем, рад, что смог помочь.

Chris Roland 15.10.2008 23:28

Было бы разумно проверить, что is_uploaded_file () возвращает true для временного файла, если вы используете copy (), поскольку move_uploaded_file () реализует эту проверку.

Tom Haigh 27.10.2008 14:32

со страницы php на move_uploaded_file (nb: это сработало для меня):

Для тех, кто использует PHP в Windows и IIS, вы ДОЛЖНЫ установить значение "upload_tmp_dir" в php.ini в какой-либо каталог, где находится каталог ваших веб-сайтов, создать этот каталог, а затем установить для него те же разрешения, которые вы установили для своих веб-сайтов. каталог. В противном случае, когда вы загружаете файл, и он попадает в C: \ WINDOWS \ Temp, а затем вы перемещаете его в каталог своего веб-сайта, его разрешения не будут установлены правильно. Это вызовет у вас проблемы, если вы затем захотите манипулировать этим файлом с помощью чего-то вроде утилиты преобразования ImageMagick.

Продолжайте биться об этом в течение часа ...

sarakinos 24.03.2021 21:05

Другие вопросы по теме