Warning: file_put_contents(./test/file.test) [function.file-put-contents]: failed to open stream: Permission denied in /usr/local/www/apache22/data/test.ru/tests.php on line 20
Ну, как же без этого?
Ну а если расшифровать, то прозвучит это дело так: Ошибка открытия пути, доступ отклонен в ... на линии ...
Ну вот, нам нельзя писать в этот каталог. Что же делать?
А нужно грамотно расставить права.
Это не сложно, но лучше почитать внимательней.
Вообще, права делятся на 3 группы:
1. Owner (Создатель файла\папки)
2. Group user (Пользователь, который отностся к какой либо группе)
3. Other (Остальные)
Ну, по моему, 1 понятно всем. К группе Owner относитесь Вы сами и суперпользователь root.
Далее идет самая непонятная строка, это Group User.
Вообще, все сервера в большенстве своем имеют ОС *nix (FreeBSD, Ubuntu, OpenBSD) и так делее, поэтому, там, для пущей безопасности, все права разграничены группами. Допустим, Вы идете в школу, Вы крутой пасан, имеете все, что захотите и даже больше, а рядом, идут мальчики в очках, которые повторяю теорему Фалеса. И так-же в правах в группах, кто-то имеет все, кто-то ничего, или что-то.
Вот по такому принципу ставятся права, на группу. Там может присутствовать любой, все зависит от Админа. Но не будем углубляться в понимание групп.
Ну и 3, Остальные, там все, кто не является членом ни одной из групп.
Итак, теперь самое вкусное.
Вот что вам говорит эта строка?
$fileAccess = chmod(0644, $file);
Сейчас поймете. Следуйте правилу:
1. Owner (Создатель файла\папки)
2. Group user (Пользователь, который отностся к какой либо группе)
3. Other (Остальные)
Итак, а теперь о цифрах. Что вообще сделать то с файлом можно?
Его можно:
1. Прочитать
2. Редактировать
3. Выполнить
В цифровом виде это звучит так:
1. Прочитать (4)
2. Редактировать (2)
3. Выполнить (1)
Если Вы хотите выставить правило, то Вам придется пораскидывать мозгами.
Допустим, нужно сделать так:
Создатель - читает+пишет+выполняет
Группы - читают+пишут
Остальные - читают
то математически складываем:
Сначала, для создателя: 4+2+1 = 7
Для групп: 4+2 = 6
Для остальных: 4
Итак, наше правило выглядит так:
$file = chmod(0764, $file);
А теперь разберем наш прошлый пример - 0644
У создателя - 6
Групп - 4
Остальных - 4
Т.е создатель может: Читать+писать
Остальные (группа и остальные) - только читать.
Но а если на сервере лежит файл, который был создан не Вами, а, допустим суперпользователем, или кем-либо другим из группы, то вероятность того, что изменить права на файл Вы сможете для своих хакерских задумок равна - 10%. Поэтому, не шалите. А еще, если папка содержит права, который запрещают Вам писать туда, то Вы хоть тресните, изменить это дело для себя так-же не сможете.
Надеюсь, база понятна, еще можно писать буквами: rwx-r----w-
И так далее, но не в рамках этого поста) Спасибо за внимание.