|
|
|
| На эту тему много говорили, но поиском я ответа не нашёл.
Проблема такая: есть папки images/gall/tmb Для tmb и для gall нужно посредством РНР (из скрипта) выставить права на запись. Нужно ли писать отдельно для каждой папки или достаточно для tmb, а gall и images присвоятся права автоматом ?
И вторая часть проблемы: CHMOD ("images/gall/tmb",0777) как разные операционные сисемы и разные сервера это воспримут? т.е. я видел что разные хостеры по разному говорят права выставлять: кто 0777, кто 777, а у кого буквами. Сработает ли скрипт и правильно ли он права присвоит?
Извините за, может быть глупые вопросы, но скриптом буду пользоваться не только я, и совсем не хочется людям напортачить. | |
|
|
|
|
|
|
|
для: Igorel
(04.08.2006 в 22:57)
| | из моего опыта, выставив права 0777 на один каталог, дочерние стали автоматом такие же, то бишь 0777.
выставлять словами или цифрами нет разницы, воспринимается одинаково....
chmod из скрипта инода не удаётся выставить, всё зависит от настроек беопасности конкретного хостинга.... опять таки из моего опыта, у меня не работал chmod из скрипта :)
большинство серверов в инете на *nix'ах, так что права нормально будут устанавливаться, везде синтаксис одинаковый....
на виндах же не знаю, не пробовал, если только у себя на компе... вроде робит chmod :)
0777 или 777 - нет разницы | |
|
|
|
|
|
|
|
для: BAHO
(04.08.2006 в 23:26)
| | Спасибо.
>chmod из скрипта инода не удаётся выставить, всё зависит от настроек беопасности конкретного хостинга
А как проверить можно какие права у папки? Я в учебнике подобного не встречал :( | |
|
|
|
|
|
|
|
для: Igorel
(04.08.2006 в 23:35)
| |
fileperms ( string filename )
Функция возвращает информацию о правах на указанный файл или FALSE в случае возникновения ошибки.
|
| |
|
|
|
|
|
|
|
для: Igorel
(04.08.2006 в 23:35)
| | можно их выставить вручную эти права из любого ftp-менеджера....
а работает ли chmod из скрипта - только методом проб и ошибок :) | |
|
|
|
|
|
|
|
для: BAHO
(04.08.2006 в 23:44)
| | >можно их выставить вручную эти права из любого ftp-менеджера....
>а работает ли chmod из скрипта - только методом проб и ошибок :)
Можно конечно, но хочется насколько упростить работу пользователя, и проверка нужна: если скрипт не сработает, тогда ручками.
Loki спасибо. | |
|
|
|
|
|
|
|
для: Igorel
(04.08.2006 в 23:52)
| | Уф... Прежде чем права выставлять надо проверить есть ли такая папка. Это я нашёл. Попробовал (на localhost, Денвер-2) выставить права и проверить, получил 16895 Причём при любом значении CHMOD('путь_к_папке', ????), кроме 777. При CHMOD('путь_к_папке', 777) получаю число 16749. Как не пытался это число разложить, ни чего не выходит. Не могу дотумкать что с ним сделать надо что б 777 получить. Объясните плиз почему у меня на локалке лабуда такая. Я подозреваю из-за того, что операционка Windows ? И скажите в каком формате fileperms ( string filename ) права доступа выдаёт и как его в четырёхзначное число привести. Спасибо. | |
|
|
|
|
|
|
|
для: Igorel
(05.08.2006 в 03:40)
| | Точно ничего подсказать не могу. Сделаю несколько замечаний, которые может быть наведут вас на правильные мысли. Права доступа задаются восьмеричными числами.
0777
0/1 - бит файл/каталог, 7 - права владельца, 7 - права пользователей группы, к кторой принадлежит владелец файла/каталога, 7 - права всех остальных.
Для последних трех:
0 - нет доступа
1 - на выполнение
2 - на запись
4 - на чтение
то есть
7 = 4 + 2 + 1 - чтение, запись, выполнение
5 = 4 + 1 - чтение выполнение
16895 (десятеричное) = 40777 (восьмеричное)
16749 = 40555
что-то напоминает ;)
fileperms() не работает с удаленными файлами, т. к. они должны быть доступны в локальной файловой системе (PHP Manual)
Не уверен, что в Винде это работает
PS переходите на FreeBSD :) | |
|
|
|
|
|
|
|
для: Holsten Bier
(05.08.2006 в 04:17)
| | Что-то я совсем запутался :(
>0/1 - бит файл/каталог,
Это если пишем 777, то принимается как 0777, т.е права для файла, а если пишем 1777, то права для каталога (папки) ?
>16895 (десятеричное) = 40777 (восьмеричное)
>16749 = 40555
>что-то напоминает ;)
Напоминает. Только ни фига у меня не получилось :(( Плиз можно примерчик как правильно десятичные и восмеричные числа раскладывать.
>fileperms() не работает с удаленными файлами
Всё в пределах одного сайта. | |
|
|
|
|
|
|
|
для: Igorel
(05.08.2006 в 11:54)
| | Нет, 0 в начале означает лишь то, что число является восьмеричным менять его на 1 нельзя ни при каких обстоятельствах. | |
|
|
|
|
|
|
|
для: cheops
(05.08.2006 в 23:46)
| | Спасибо всем за информацию. Только ещё уточняющий вопрос возник. Для меня то, что описал Holsten Bier совсем новое, но я как-то расчитывал IP с вида 001,002,003,004 к виду ********* (10 знаков) путём 001*256*256*256 + 002*256*256 + 003*256 + 0. Всё совпадало - у меня была возможность проверить. Вопрос вот в чём: приведённый Holsten Bier пример тоже самое или нет ? Если нет, то что я делал ? | |
|
|
|
|
|
|
|
для: Igorel
(06.08.2006 в 00:48)
| | Чуть по другому в IP-адресе 4 разряда и используются десятичные числа. Тут испольуется восьмиричная система счисления, т.е. цифр в одном разряде не 10 (от 0 до 9), а 8 (от 0 до 7). | |
|
|
|
|
|
|
|
для: cheops
(05.08.2006 в 23:46)
| | Oops!
Значит я ошибся на счет нуля. Досадно! | |
|
|
|
|
|
|
|
для: Holsten Bier
(05.08.2006 в 04:17)
| | Заход второй:
>16895 (десятеричное) = 40777 (восьмеричное)
>16749 = 40555
>что-то напоминает ;)
Похоже только одно: 4 - четыре числа, следующих далее; из них: 0 - означает что права для каталога, 777 сами права.
...?!?... Так ? или я брежу ? | |
|
|
|
|
|
|
|
для: Igorel
(05.08.2006 в 14:10)
| | Похоже на то, но я не знаком с форматом данных, которые возвращает fileperms().
В Винде права задать не получится. (см. сообщение koder'a ниже)
На предыдущий вопрос о преобразовании чисел: функция decoct("decimal") (из дес в восьм), octdec("octal") - обратная первой.
Для того, чтобы получить отдельные разряды (в таком порядке [4][d][ow][g][o], где [4] - наш неопознанный разряд, d - бит файл/каталог, ow - разряд владельца, g - разряд группы, o - разряд всех остальных)
<?php
# $dec - десятичное число или строка, представляющая десятичное число
# применяем битовую маску 0x7 для получения восьмеричного представления
$o = $dec & 0x7;
$g = ($dec >> 3) & 0x7;
$ow = ($dec >> 6) & 0x7;
$d = ($dec >> 9) & 0x7;
?>
|
| |
|
|
|
|
|
|
|
для: Igorel
(04.08.2006 в 22:57)
| | На ХР нет такого понятия, как права доступа. Кликнув на любом файле правой кнопкой и выбрав свойства, увидим, что есть лишь атрибуты: системный, скрытый и т.д. | |
|
|
|