Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128

Права папок и файлов при загрузке

22.02.2019, 19:42. Показов 4477. Ответов 16

Студворк — интернет-сервис помощи студентам
Приветствую!

Подскажите как правильно подправить код, чтобы нормальные права ставил на файлы и папки при загрузке на сервер. Сервер на linux. Скрипт создает и загружает файлы без проблем, но если зайти файл - менеджером на сервер и попытаться удалить этот файл, выскакивает сообщение: Permission denied. Если удалить этот файл при помощи этого же скрипта, проблем не возникает.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  if ($_FILES['files']['error'][0] === UPLOAD_ERR_OK)
  {
    $upload_dir = ROOT_DIR . '/uploads/files/' . date('Y/m/'); //имя папки с файлами
    if (is_dir($upload_dir) == false) $dir = mkdir($upload_dir, 0777, true); //если нет папки, создаем
    foreach ($_FILES['files']['error'] as $key => $error)// цикл для нескольких файлов
    {
        if ($error == UPLOAD_ERR_OK)// если файл загружен продолжаем
        {
 
            if (is_uploaded_file($_FILES['files']['tmp_name'][$key]))
            {
                $info = pathinfo($_FILES['files']['name'][$key]); //получаем информацию загруженного файла
                $tmp = $_FILES['files']['tmp_name'][$key]; //временный путь до файла
                $nnamefile = date('Hi') . '_' . $info['filename'] . '_' . rand(1, 1000) . '.' . $info['extension'];
                $newnamefile = $upload_dir . $nnamefile;
                if (move_uploaded_file($tmp, $newnamefile))
                {
                    $newnamefile = '/uploads/files/' . date('Y/m/') . $nnamefile;
                    $qfiles = "INSERT INTO `files` (`id`, `files_link`, `name`, `date`) VALUES ('', '$newnamefile', '$info[basename]', NOW())";
                }
        }
    } 
}
Помогите решить проблему новичку.

И ЗАЩИТНИКОВ ОТЕЧЕСТВА С 23 ФЕВРАЛЯ
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2019, 19:42
Ответы с готовыми решениями:

Права доступа к папкам при загрузке файлов
Всем добрый день! Делаю загрузку картинок себе на локальный сервер у меня Apache2.2, вот код обработчика формы: $pic_weight = 3000; ...

FTP не вижу файлов и папок (права на папку)
Сервер Debian 7. FTP сервер vsftpd. FTP клиент Filezilla. Настроил подключение, подключаюсь. Подключился, но не вижу папок и файлов. ...

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

16
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.02.2019, 20:09
wolfz, вот же http://php.net/manual/ru/function.chmod.php
0
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
22.02.2019, 20:27  [ТС]
PHP
1
 if (is_dir($upload_dir) == false) $dir = mkdir($upload_dir, 0777, true); //если нет папки, создаем
это уже есть в коде
Или нужно еще раз менять после создания папки с 0777 ?
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.02.2019, 20:42
wolfz, так Вы же даете права папке. А не файлам. В папке, к которой у вас доступ, могут находиться файлы даже с другим владельцем. Вот вам список функций для работы с файловой системой - http://php.net/manual/ru/ref.filesystem.php
Пригодится.
0
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
22.02.2019, 21:15  [ТС]
Так я даже папку не могу удалить через файловый менеджер, хотя ей выдается полные права.

Пробовал менять владельца (chown), выдает ошибку. Нашел что можно использовать, umask. Попробовал, файлы и папки удаляются, но написано, что использовать такой метод не желательно. Дайте пожалуйста пример, как выдавать права файлам на примере моего скрипта.

Добавлено через 21 минуту
добавил строчку в код
Code
1
chmod($newnamefile, 0777);
права меняет, но так же проблема с удалением.

PHP
1
2
3
4
5
6
                if (move_uploaded_file($tmp, $newnamefile))
                {
                    chmod($newnamefile, 0777);
                    $newnamefile = '/uploads/files/' . date('Y/m/') . $nnamefile;
                    $qfiles = "INSERT INTO `files` (`id`, `files_link`, `name`, `date`) VALUES ('', '$newnamefile', '$info[basename]', NOW())";
                }
Короче, какая то байда с правами, понять не могу.... как победить проблему? Если добавляем umask все работает, но боюсь оставлять эту функцию, мало ли что...
Использование umask() может привести к неожиданному поведению одновременно работающих скриптов и самого веб-сервера, т.к. они все будут использовать одну и ту же umask.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.02.2019, 21:52
wolfz, только что попробовал создать\удалить папку. Никаких ухищрений не использовал
PHP
1
echo mkdir("tmptest", 0777, true) ? '!!!!' : 'no';
папка создается и спокойно удаляется и вручную и и методом rmdir();

У меня есть вопрос, в каком окружении работает обработчик - на лине с локалкой?

Также создается ощущение, что папка занята другим процессом или в настройках менеджера есть ограничения.
0
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
22.02.2019, 22:09  [ТС]
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
У меня есть вопрос, в каком окружении работает обработчик - на лине с локалкой?
Виртуальная ВПС на хостинге
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Также создается ощущение, что папка занята другим процессом или в настройках менеджера есть ограничения.
А как это отловить, файлзилой с такими настройками года 3 пользуюсь, никогда проблем не было. Через менеджер не удаляется, а вот через ssh под рутом удаляется...
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.02.2019, 22:18
wolfz, проблема не в коде. Думаю, в настройках рабочего окружения, в котором Вы работаете.
Какой-то процесс не дает Вам удалить Вам директорию, потому что она занята им. Но это так мысли.

Добавлено через 9 секунд
wolfz, проблема не в коде. Думаю, в настройках рабочего окружения, в котором Вы работаете.
Какой-то процесс не дает Вам удалить Вам директорию, потому что она занята им. Но это так мысли.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
22.02.2019, 22:18
Цитата Сообщение от wolfz Посмотреть сообщение
Так я даже папку не могу удалить через файловый менеджер, хотя ей выдается полные права.
Естественно нельзя удалить папку, в которой есть файлы на удаление которых прав нет.

Помимо прав у файлов есть группа и владелец. И веб сервер и пользователь от имени которого происходит удаление скорее всего различается
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
22.02.2019, 22:19
Цитата Сообщение от wolfz Посмотреть сообщение
Так я даже папку не могу удалить через файловый менеджер, хотя ей выдается полные права.
Естественно нельзя удалить папку, в которой есть файлы на удаление которых прав нет.

Помимо прав у файлов есть группа и владелец. И веб сервер и пользователь от имени которого происходит удаление скорее всего различается
1
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.02.2019, 22:19
wolfz, проблема не в коде. Думаю, в настройках рабочего окружения, в котором Вы работаете.
Какой-то процесс, чьи права на доступ выше чем Ваши, не дает Вам удалить Вам директорию, потому что она занята им. Но это так мысли.
1
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.02.2019, 22:24
Вот как так форум делает))
Миниатюры
Права папок и файлов при загрузке  
0
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
23.02.2019, 01:41  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Помимо прав у файлов есть группа и владелец. И веб сервер и пользователь от имени которого происходит удаление скорее всего различается
Видимо проблема не решаема....(((

Добавлено через 2 часа 52 минуты
Что вообще не пойму, что творится....

Удалил полностью папку uploads из под рута, и запустил скрипт. Скрипт создал все папки и загрузил файл, но с правами на папку 755 и файл 644, когда в скрипте стоит

PHP
1
 if (is_dir($upload_dir) == false) $dir = mkdir($upload_dir, 0777, true);
Это глюк сервера или что?

И по идее ведь, если я создал на серваке в панели ISP пользователя? зашел по ftp от этого пользователя и загрузил сайт на хостинг. Скрипт должен же загружать файлы от этого пользователя? А то такое ощущение, что скрипт создает папки с группой root и пользователь уже не может их удалить

Добавлено через 12 минут
Посмотрел группы на сервере, получается, что скрипт создает папки и загружает файлы с группой apache, поэтому не могу удалить файлы, потому что я из группы сайта где находится скрипт. Как исправить ситуацию, подскажите кто знает))
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
23.02.2019, 02:04
wolfz,
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Какой-то процесс, чьи права на доступ выше чем Ваши, не дает Вам удалить Вам директорию, потому что она занята им.
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Естественно нельзя удалить папку, в которой есть файлы на удаление которых прав нет.
Цитата Сообщение от wolfz Посмотреть сообщение
создает папки и загружает файлы с группой apache, поэтому не могу удалить файлы, потому что я из группы сайта где находится скрипт.
Я сейчас буду чувствовать себя Капитаном Очевидность - скрипт и Ваша учетка должены иметь те же права, что и созданная директория с файлами, причем эти права должны быть на всем абсолютном пути. То есть если Вы создаете её в директории, где Ваша учетка не имеет достаточных прав - адьос.
0
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
23.02.2019, 04:47  [ТС]
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Я сейчас буду чувствовать себя Капитаном Очевидность - скрипт и Ваша учетка должены иметь те же права, что и созданная директория с файлами, причем эти права должны быть на всем абсолютном пути. То есть если Вы создаете её в директории, где Ваша учетка не имеет достаточных прав - адьос.
Да я все это прекрасно понимаю, не понимаю почему так случилось. Если бы я сам мудрил на впс, так там стоит ips где четко создается пользователь, где создается под этого пользователя директория с соответствующими правами. Меня тревожит вопрос, почему так получилось. Попробую стукнутся в саппорт хостинга, благо адекватные ребята)))
1
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
23.02.2019, 05:00
Цитата Сообщение от wolfz Посмотреть сообщение
почему так случилось
Цитата Сообщение от wolfz Посмотреть сообщение
Попробую стукнутся в саппорт хостинга
думаю это верное решение
0
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
23.02.2019, 08:10  [ТС]
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
думаю это верное решение
Так и есть, проблема была в сервере)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2019, 08:10
Помогаю со студенческими работами здесь

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

Мощный компьютер тормозит при запуске и при открытии папок и файлов
Мощный компьютер тормозит при запуске и при открытии папок любый файлов игр и так далее вообще во всём характеристики компьютера: Core...

Требует права администратора при сохранении файлов
Доброго времени суток, понимаю что тема уже наверняка поднималась, но я нигде не нашел... У меня проблема, с учетной записью, при...

Требует права администратора при сохранении файлов
Доброго времени суток, понимаю что тема уже наверняка поднималась, но я нигде не нашел... У меня проблема, с учетной записью, при...

Тормозит при перетаскивании файлов и папок
При запущенной программе или игре, когда я перетаскиваю файл либо папку они дико тормозят. При перетаскивании окон всё в норме. Винда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru