PHP: создать файл только для чтения без chmod () - PullRequest
0 голосов
/ 19 мая 2011

У меня отключен chmod () на моем сервере, но я все еще хочу, чтобы пользователи могли создавать файлы только для чтения через PHP, есть ли способ сделать это?

Ответы [ 2 ]

6 голосов
/ 19 мая 2011

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

РЕДАКТИРОВАТЬ на самом деле, есть способ:

<?php
  $u = umask(0377); // disables --wxrwxrwx permissions
  $f = fopen("test", "w");
  umask($u);
  fwrite($f, "this is a test\n");
  fclose($f);
?>

% php foo.php
% ls -l test
-r--------  1 xxx xxx  14 19 May 10:27 test
% cat test
this is a test

Манипулирование umask позволяет создавать дескриптор файла для чтения / записи, даже если базовая запись каталога доступна только для чтения.

0 голосов
/ 19 мая 2011

В качестве обходного пути вы можете сначала сохранить файлы, используя file_put_contents(), а затем использовать ftp_chmod() для изменения прав доступа к файлу.

Другой вариантбудет через командную строку, но если chmod отключен, то exec вряд ли будет работать.И если ваш хостер отключил оба, то, скорее всего, есть причина для этого.(Если только это уменьшить затраты на поддержку.)

...