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

Форум PHP

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

 

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

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

тема: Безобидный chmod()
 
 автор: Владимир55   (07.06.2007 в 16:39)   письмо автору
 
 

Как мне казалось, задать права доступа к файлу на уровне 0777 можно в любом месте скрипта. И если такие права нужны, то лучше задать их сразу, как только сформировался соответствующий файл. Поэтому я пишу:

$file = fopen ("data/name-rss.txt", "w") ;         // Создание нового пустого файла (или очистка).
chmod("data/name-rss.txt", 0777);                 // Устанавливаем права доступа 0777
fputs ($file, $name_rss) ;                                //  Запись
fclose ($file) ;                                                     //  Закрытие файла


Но при исполнении получаю сообщения по это и всем аналогичным операциям:

Warning: chmod() [function.chmod]: Operation not permitted in admm-1.php on line 66

Строка 66 - это есть chmod

Что же здесь не так?

   
 
 автор: Trianon   (07.06.2007 в 16:46)   письмо автору
 
   для: Владимир55   (07.06.2007 в 16:39)
 

попробуйте chmod поставить после fclose

   
 
 автор: Faraon   (07.06.2007 в 16:52)   письмо автору
 
   для: Владимир55   (07.06.2007 в 16:39)
 

А где Вы создаете файл права на директорию какие?

   
 
 автор: Владимир55   (07.06.2007 в 17:15)   письмо автору
 
   для: Faraon   (07.06.2007 в 16:52)
 

Права на директории, в которых имеется указанный фрагмент, 0777.

А самое удивительно - ошибка "дышит"! То она есть, то её нет. В скрипте около десятка php-файлов, и он не вполне настроен, так что сама по себе какая-нибудь блуждающая ошибка не вызывала бы особого удивления, но она проявляется только в этой "безобидной" операции chmod, причем только в приведенном фрагменте создания/очистки файла.

Нет ли какой-нибудь расшифровки: в каких случаях запрещен chmod ?

   
 
 автор: Faraon   (07.06.2007 в 17:25)   письмо автору
 
   для: Владимир55   (07.06.2007 в 17:15)
 

Так если у Вас права на директорию data стоят 777 то и файлы находящиеся в ней тоже будут с правами 777, если Вы конечно на некоторые файлы не поставите другие права, и ругаться может из-за того что Вы как бы два раза задаете одни и теже права. Просто уберите chmod

   
 
 автор: Trianon   (08.06.2007 в 10:46)   письмо автору
 
   для: Faraon   (07.06.2007 в 17:25)
 

>Так если у Вас права на директорию data стоят 777 то и файлы находящиеся в ней тоже будут с правами 777, если Вы конечно на некоторые файлы не поставите другие права, и ругаться может из-за того что Вы как бы два раза задаете одни и теже права.

Это еще почему?

   
 
 автор: Faraon   (08.06.2007 в 11:20)   письмо автору
 
   для: Trianon   (08.06.2007 в 10:46)
 

Ошибся! У меня уже от работы плющит :)))

   
 
 автор: Unkind   (07.06.2007 в 17:26)   письмо автору
 
   для: Владимир55   (07.06.2007 в 17:15)
 

Скажите, зачем Вы пытаетесь изменить права файлу во время работы с ним? Почему не до открытия, не после?

   
 
 автор: Yuriev   (07.06.2007 в 23:31)   письмо автору
 
   для: Владимир55   (07.06.2007 в 16:39)
 

А самое удивительно - ошибка "дышит"! То она есть, то её нет.
$file = fopen ("data/name-rss.txt", "w") ; // Создание нового пустого файла (или очистка).

Когда создается файл, то права на него не нужны, когда очистка - нужны (а их в этот момент нет) и может по этому кажется, что ошибка "дышит".

   
 
 автор: Владимир55   (08.06.2007 в 02:06)   письмо автору
 
   для: Yuriev   (07.06.2007 в 23:31)
 

Вот это очень похоже!

Часть операторов убрал, а другие перестали выдавать ошибки. Скрипт словно "притерся", приработался.

   
 
 автор: Unkind   (08.06.2007 в 02:35)   письмо автору
 
   для: Yuriev   (07.06.2007 в 23:31)
 

Полнейшая глупость.

У меня еще один вопрос - зачем Вы вообще хотите менять права?

   
 
 автор: Владимир55   (08.06.2007 в 10:43)   письмо автору
 
   для: Unkind   (08.06.2007 в 02:35)
 

Алгоритм такой.

В одном скрипте:
- первоначальное создание файла (w);
- установка прав доступа к созданному файлу 0777 (сейчас пока что так);
- записываю в созданный файл информацию;
- закрываю файл.

В другом скрипте:
- считывание информации из файла;

В третьем скрипте:
- открытие файла в режиме (w), т.е. очистка;
- записываю в этот файл информацию;
- закрываю файл.

Перенести установку прав доступа в строку, следующую за закрытием файла? Или что?

   
 
 автор: Unkind   (08.06.2007 в 11:25)   письмо автору
 
   для: Владимир55   (08.06.2007 в 10:43)
 

Еще раз: зачем Вы вообще устанавливаете права файлу?

   
 
 автор: coloboc66   (08.06.2007 в 12:13)   письмо автору
 
   для: Unkind   (08.06.2007 в 11:25)
 

Ну наверное для того, чтобы изменять файл скриптом. А разве на файл не 666 надо писать??

   
 
 автор: Unkind   (08.06.2007 в 12:36)   письмо автору
 
   для: coloboc66   (08.06.2007 в 12:13)
 

Ну наверное для того, чтобы изменять файл скриптом.
А без этого он не смог что ли создать файл ($file = fopen ("data/name-rss.txt", "w"))? Смог.
Вы делаете какие-то действия не задумываясь зачем.

   
 
 автор: Владимир55   (08.06.2007 в 15:36)   письмо автору
 
   для: Unkind   (08.06.2007 в 12:36)
 

Я был неправ.

В одном из постов я когда-то нашел высказывание, и занес его в свой блокнотик как руководство к действиям, а это оказалось неверным. Теперь я понял, что установление прав доступа в моем случае ненужно.

Спасибо, Unkind, что "достучались" до меня!

   
Rambler's Top100
вверх

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