Как я могу создать файл с file_put_contents, который имеет права на запись группы? - PullRequest
24 голосов
/ 06 августа 2009

Я использую file_put_contents для создания файла. Мой процесс php работает в группе с разрешениями на запись в каталог. Однако, когда вызывается file_put_contents, результирующий файл не имеет разрешений на групповую запись (он создается просто отлично с первого раза). Это означает, что если я попытаюсь перезаписать файл, он потерпит неудачу из-за отсутствия разрешений.

Есть ли способ создать файл с правами записи группы?

Ответы [ 3 ]

26 голосов
/ 06 августа 2009

Пример 1 (установить права доступа к файлу для чтения и записи для владельца и группы и для чтения для других):

file_put_contents($filename, $data);
chmod($filename, 0664);

Пример 2 (сделать файл доступным для записи по группе без изменения других разрешений):

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 16);

Пример 3 (сделать файл доступным для записи всеми без изменения других разрешений):

file_put_contents($filename, $data);
chmod($filename, fileperms($filename) | 128 + 16 + 2);

128, 16, 2 предназначены для записи для владельца, группы и других соответственно.

22 голосов
/ 06 августа 2009

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

Другой способ (лучше в соответствии с документацией) - использовать chmod для изменения разрешений сразу после создания файла.


Что ж, после перечитывания вопроса, надеюсь, я его хорошо понял ...

2 голосов
/ 06 августа 2009

Чтобы открыть файл и перезаписать содержимое, вам необходимы права на запись в файл. Важно понимать разницу. Чтобы перезаписать весь файл, вам действительно нужны разрешения на запись в каталог .

Используйте chmod(), чтобы установить, что подходит для файла и / или каталога, если вы хотите быть откровенным об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...