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
Форумы портала PHP.SU :: Версия для печати :: Как дать разрешение на удаление файла?
Форумы портала PHP.SU » » Вопросы новичков » Как дать разрешение на удаление файла?

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

1. Perun - 16 Июля, 2020 - 22:57:01 - перейти к сообщению
перед удалением не помогает
2. LIME - 17 Июля, 2020 - 06:12:30 - перейти к сообщению
значит пользователь, из под которого пых, не имеет права менять права для файла
(Добавление)
Цитата:
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
что хоть возвращает?
3. Perun - 17 Июля, 2020 - 09:32:10 - перейти к сообщению
LIME пишет:
что хоть возвращает?
FALSE
Выбрасывает warning: Operation not permitted
4. LIME - 17 Июля, 2020 - 09:45:48 - перейти к сообщению
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);// текущие права файла

вот смотри и сравнивай
5. Мелкий - 17 Июля, 2020 - 10:16:42 - перейти к сообщению
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': Нет такого файла или каталога


Для удаления файла вообще не нужны никакие права на этот файл. Для удаления нужны права записи на директорию в которой этот файл лежит.
6. LIME - 17 Июля, 2020 - 10:21:32 - перейти к сообщению
Действительно. Теперь все то же самое, но для директории)
7. Perun - 17 Июля, 2020 - 11:33:22 - перейти к сообщению
Мелкий, так в терминале выполнены команды под sudo. В терминале и у меня это работает. Как это делать в коде? Мне интерпретатор выдает ошибку, что у меня нет прав ни владельца изменить ни какие либо права, хоть у папки, хоть у файла.
(Добавление)
LIME пишет:

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

И на папку и на файлы в нем показывает разрешения 0777
8. LIME - 17 Июля, 2020 - 15:58:17 - перейти к сообщению
0777 означает что дело совсем не в правах
9. Perun - 17 Июля, 2020 - 16:04:05 - перейти к сообщению
LIME это я уже понял, ищу причину. Есть идеи, проверяю.
10. LIME - 17 Июля, 2020 - 16:31:29 - перейти к сообщению
вывод ошибок хоть включил?
http://phpfaq[dot]ru/debug
11. Perun - 17 Июля, 2020 - 17:08:28 - перейти к сообщению
LIME пишет:
вывод ошибок хоть включил?

Я же написал, что вижу warning.
Мне тоже нужно было несколько раз перечитать))
Там явно указано, что проблема с разрешениями. И думается, что проблема на уровне ОС.
12. LIME - 17 Июля, 2020 - 17:41:42 - перейти к сообщению
а не может он далее по коду снова создаваться?))
die после удаления
выведи путь перед самым удалением
и права там же на директорию
и error_reporting прямо перед этим всем непосредственно
(Добавление)
Perun пишет:
Там явно указано, что проблема с разрешениями.
это проблема со сменой прав
юзер пыха не владелец и менять их не может
а читать, писать и выполнять запросто
13. Perun - 17 Июля, 2020 - 18:28:03 - перейти к сообщению
LIME пишет:
а не может он далее по коду снова создаваться?))

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

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

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

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

А мне на локальном сервере просто назначить разрешения там где нужно и какие нужно на уровне ОС?
14. LIME - 17 Июля, 2020 - 18:42:10 - перейти к сообщению
на всем пути от корня также требуются права на чтения для директорий
иначе просто не дойдет дело до прав конечной папки
создай папку и назначь владельцем пользователя пыха
на хостингах все папки в рабочей зоне уже под этим владельцем сразу
15. Perun - 17 Июля, 2020 - 21:06:58 - перейти к сообщению
LIME пишет:
назначь владельцем пользователя пыха


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

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

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

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

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

 

Powered by ExBB FM 1.0 RC1