Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как правильно (из РНР-скрипта) выставить папкам права на запись
 
 автор: Igorel   (04.08.2006 в 22:57)   письмо автору
 
 

На эту тему много говорили, но поиском я ответа не нашёл.
Проблема такая: есть папки images/gall/tmb Для tmb и для gall нужно посредством РНР (из скрипта) выставить права на запись. Нужно ли писать отдельно для каждой папки или достаточно для tmb, а gall и images присвоятся права автоматом ?
И вторая часть проблемы: CHMOD ("images/gall/tmb",0777) как разные операционные сисемы и разные сервера это воспримут? т.е. я видел что разные хостеры по разному говорят права выставлять: кто 0777, кто 777, а у кого буквами. Сработает ли скрипт и правильно ли он права присвоит?
Извините за, может быть глупые вопросы, но скриптом буду пользоваться не только я, и совсем не хочется людям напортачить.

   
 
 автор: BAHO   (04.08.2006 в 23:26)   письмо автору
 
   для: Igorel   (04.08.2006 в 22:57)
 

из моего опыта, выставив права 0777 на один каталог, дочерние стали автоматом такие же, то бишь 0777.
выставлять словами или цифрами нет разницы, воспринимается одинаково....
chmod из скрипта инода не удаётся выставить, всё зависит от настроек беопасности конкретного хостинга.... опять таки из моего опыта, у меня не работал chmod из скрипта :)

большинство серверов в инете на *nix'ах, так что права нормально будут устанавливаться, везде синтаксис одинаковый....
на виндах же не знаю, не пробовал, если только у себя на компе... вроде робит chmod :)

0777 или 777 - нет разницы

   
 
 автор: Igorel   (04.08.2006 в 23:35)   письмо автору
 
   для: BAHO   (04.08.2006 в 23:26)
 

Спасибо.
>chmod из скрипта инода не удаётся выставить, всё зависит от настроек беопасности конкретного хостинга
А как проверить можно какие права у папки? Я в учебнике подобного не встречал :(

   
 
 автор: Loki   (04.08.2006 в 23:44)   письмо автору
 
   для: Igorel   (04.08.2006 в 23:35)
 


fileperms ( string filename )


Функция возвращает информацию о правах на указанный файл или FALSE в случае возникновения ошибки. 


   
 
 автор: BAHO   (04.08.2006 в 23:44)   письмо автору
 
   для: Igorel   (04.08.2006 в 23:35)
 

можно их выставить вручную эти права из любого ftp-менеджера....
а работает ли chmod из скрипта - только методом проб и ошибок :)

   
 
 автор: Igorel   (04.08.2006 в 23:52)   письмо автору
 
   для: BAHO   (04.08.2006 в 23:44)
 

>можно их выставить вручную эти права из любого ftp-менеджера....
>а работает ли chmod из скрипта - только методом проб и ошибок :)

Можно конечно, но хочется насколько упростить работу пользователя, и проверка нужна: если скрипт не сработает, тогда ручками.

Loki спасибо.

   
 
 автор: Igorel   (05.08.2006 в 03:40)   письмо автору
 
   для: Igorel   (04.08.2006 в 23:52)
 

Уф... Прежде чем права выставлять надо проверить есть ли такая папка. Это я нашёл. Попробовал (на localhost, Денвер-2) выставить права и проверить, получил 16895 Причём при любом значении CHMOD('путь_к_папке', ????), кроме 777. При CHMOD('путь_к_папке', 777) получаю число 16749. Как не пытался это число разложить, ни чего не выходит. Не могу дотумкать что с ним сделать надо что б 777 получить. Объясните плиз почему у меня на локалке лабуда такая. Я подозреваю из-за того, что операционка Windows ? И скажите в каком формате fileperms ( string filename ) права доступа выдаёт и как его в четырёхзначное число привести. Спасибо.

   
 
 автор: Holsten Bier   (05.08.2006 в 04:17)   письмо автору
 
   для: 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 :)

   
 
 автор: Igorel   (05.08.2006 в 11:54)   письмо автору
 
   для: Holsten Bier   (05.08.2006 в 04:17)
 

Что-то я совсем запутался :(
>0/1 - бит файл/каталог,
Это если пишем 777, то принимается как 0777, т.е права для файла, а если пишем 1777, то права для каталога (папки) ?

>16895 (десятеричное) = 40777 (восьмеричное)
>16749 = 40555
>что-то напоминает ;)
Напоминает. Только ни фига у меня не получилось :(( Плиз можно примерчик как правильно десятичные и восмеричные числа раскладывать.

>fileperms() не работает с удаленными файлами
Всё в пределах одного сайта.

   
 
 автор: cheops   (05.08.2006 в 23:46)   письмо автору
 
   для: Igorel   (05.08.2006 в 11:54)
 

Нет, 0 в начале означает лишь то, что число является восьмеричным менять его на 1 нельзя ни при каких обстоятельствах.

   
 
 автор: Igorel   (06.08.2006 в 00:48)   письмо автору
 
   для: 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 пример тоже самое или нет ? Если нет, то что я делал ?

   
 
 автор: cheops   (06.08.2006 в 12:10)   письмо автору
 
   для: Igorel   (06.08.2006 в 00:48)
 

Чуть по другому в IP-адресе 4 разряда и используются десятичные числа. Тут испольуется восьмиричная система счисления, т.е. цифр в одном разряде не 10 (от 0 до 9), а 8 (от 0 до 7).

   
 
 автор: Holsten Bier   (07.08.2006 в 00:19)   письмо автору
 
   для: cheops   (05.08.2006 в 23:46)
 

Oops!
Значит я ошибся на счет нуля. Досадно!

   
 
 автор: Igorel   (05.08.2006 в 14:10)   письмо автору
 
   для: Holsten Bier   (05.08.2006 в 04:17)
 

Заход второй:
>16895 (десятеричное) = 40777 (восьмеричное)
>16749 = 40555
>что-то напоминает ;)

Похоже только одно: 4 - четыре числа, следующих далее; из них: 0 - означает что права для каталога, 777 сами права.
...?!?... Так ? или я брежу ?

   
 
 автор: Holsten Bier   (05.08.2006 в 14:51)   письмо автору
 
   для: 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;

?>

   
 
 автор: koder   (05.08.2006 в 08:26)   письмо автору
 
   для: Igorel   (04.08.2006 в 22:57)
 

На ХР нет такого понятия, как права доступа. Кликнув на любом файле правой кнопкой и выбрав свойства, увидим, что есть лишь атрибуты: системный, скрытый и т.д.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования