Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как дать разрешение на удаление файла?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Perun
Отправлено: 16 Июля, 2020 - 22:57:01
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




перед удалением не помогает
 
 Top
LIME
Отправлено: 17 Июля, 2020 - 06:12:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




значит пользователь, из под которого пых, не имеет права менять права для файла
(Добавление)
Цитата:
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
что хоть возвращает?
 
 Top
Perun
Отправлено: 17 Июля, 2020 - 09:32:10
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




LIME пишет:
что хоть возвращает?
FALSE
Выбрасывает warning: Operation not permitted
 
 Top
LIME
Отправлено: 17 Июля, 2020 - 09:45:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. echo get_current_user();// имя пользователя из-под которого работает php
  2. echo getmyuid();// id пользователя из-под которого работает php
  3.  
  4. echo fileowner($file);// id владельца файла
  5. echo posix_getpwuid(fileowner($file))// имя владельца файла
  6. echo filegroup($file);// группа файла
  7. echo posix_getgrgid(filegroup($file)));// имя группы файла
  8.  
  9. echo substr(sprintf('%o', fileperms($file)), -4);// текущие права файла

вот смотри и сравнивай
 
 Top
Мелкий Супермодератор
Отправлено: 17 Июля, 2020 - 10:16:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (bash):
скопировать код в буфер обмена
  1. melkij@melkij:~/tmp$ whoami
  2. melkij
  3. melkij@melkij:~/tmp$ sudo touch file
  4. melkij@melkij:~/tmp$ sudo chmod 0600 file
  5. melkij@melkij:~/tmp$ ls -l file
  6. -rw------- 1 root root 0 июл 17 10:13 file
  7. melkij@melkij:~/tmp$ rm -f file
  8. melkij@melkij:~/tmp$ ls -la file
  9. ls: невозможно получить доступ к 'file': Нет такого файла или каталога


Для удаления файла вообще не нужны никакие права на этот файл. Для удаления нужны права записи на директорию в которой этот файл лежит.


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 17 Июля, 2020 - 10:21:32
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Действительно. Теперь все то же самое, но для директории)
 
 Top
Perun
Отправлено: 17 Июля, 2020 - 11:33:22
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Мелкий, так в терминале выполнены команды под sudo. В терминале и у меня это работает. Как это делать в коде? Мне интерпретатор выдает ошибку, что у меня нет прав ни владельца изменить ни какие либо права, хоть у папки, хоть у файла.
(Добавление)
LIME пишет:

echo substr(sprintf('%o', fileperms($file)), -4)
вот смотри и сравнивай

И на папку и на файлы в нем показывает разрешения 0777

(Отредактировано автором: 17 Июля, 2020 - 11:40:43)

 
 Top
LIME
Отправлено: 17 Июля, 2020 - 15:58:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




0777 означает что дело совсем не в правах
 
 Top
Perun
Отправлено: 17 Июля, 2020 - 16:04:05
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




LIME это я уже понял, ищу причину. Есть идеи, проверяю.
 
 Top
LIME
Отправлено: 17 Июля, 2020 - 16:31:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




вывод ошибок хоть включил?
http://phpfaq[dot]ru/debug
 
 Top
Perun
Отправлено: 17 Июля, 2020 - 17:08:28
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




LIME пишет:
вывод ошибок хоть включил?

Я же написал, что вижу warning.
Мне тоже нужно было несколько раз перечитать))
Там явно указано, что проблема с разрешениями. И думается, что проблема на уровне ОС.
 
 Top
LIME
Отправлено: 17 Июля, 2020 - 17:41:42
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а не может он далее по коду снова создаваться?))
die после удаления
выведи путь перед самым удалением
и права там же на директорию
и error_reporting прямо перед этим всем непосредственно
(Добавление)
Perun пишет:
Там явно указано, что проблема с разрешениями.
это проблема со сменой прав
юзер пыха не владелец и менять их не может
а читать, писать и выполнять запросто
 
 Top
Perun
Отправлено: 17 Июля, 2020 - 18:28:03
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




LIME пишет:
а не может он далее по коду снова создаваться?))

Нет.
Этот функционал только в процессе разработки. Я тестовую папку с файлами создавал вручную. Подумал, что очевидно разные владельцы создают и пытаются удаление поизводить - в этом и поблема.

Но похоже, что нет.
Доделал метод, который уже способен создать папку и записать в нее файл, но и тут проблема.

Т.е. я и создать папку не могу и соответственно файл в нее и удалить не могу то, что создано вручную в ОС.
Права в коде я оже изменить не могу, поменять владельца тоже не могу.
Где пытаюсь создавать папку - разрешения, полученные из кода = 0775.

Или все эти нужные права раздаются нужным папкам администратором/владельцем домена. кем еще там, кто имеет доступ у управлению на боевом сервере - сразу как заливается туда приложение?

А мне на локальном сервере просто назначить разрешения там где нужно и какие нужно на уровне ОС?

(Отредактировано автором: 17 Июля, 2020 - 18:33:23)

 
 Top
LIME
Отправлено: 17 Июля, 2020 - 18:42:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




на всем пути от корня также требуются права на чтения для директорий
иначе просто не дойдет дело до прав конечной папки
создай папку и назначь владельцем пользователя пыха
на хостингах все папки в рабочей зоне уже под этим владельцем сразу
 
 Top
Perun
Отправлено: 17 Июля, 2020 - 21:06:58
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




LIME пишет:
назначь владельцем пользователя пыха


Пользователя пхп получил, сделал папку, назначил владельца, пока вроде прояснилось. Во всяком случае, понятно откуда растут ноги.

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

Вручную создал папку, с владельцем тем, же что и запускает php(непонятно откуда он берется. www-data), дал разрешения 777, но уже удалить эту папку или что то внутри нее, я не имею прав.

С mkdir тоже непонятно. Указываю в функции 0777, а по факту 0755 создается.

После выполнения move_upliaded, файл записывается с исходными правами, но владелец у него каким то образом меняется, и для меня этот файл уже становится доступным только в режиме чтения.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB