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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

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

Сообщения:  [1-10]   [11-16] 

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

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

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

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

   
 
 автор: 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   (05.08.2006 в 23:46)   письмо автору
 
   для: Igorel   (05.08.2006 в 11:54)
 

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

   
 
 автор: 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;

?>

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

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

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

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

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

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

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

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

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

   
 
 автор: 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 в 03:40)   письмо автору
 
   для: Igorel   (04.08.2006 в 23:52)
 

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

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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